2011-12-31 167 views
0

我在找一种方法将array更改为preg_replacepreg替换函数和http://?

// URLS 
$pattern[1] = '/\[url\=(.*?)\](.*?)\[\/url\]/i'; 
$replace[1] = "<a href=\"http://$1\">$2</a>"; 
// IMAGES 
$pattern[2] = '/\[img\=(.*?)\]/i'; 
$replace[2] = "<img src=\"http://$1\" alt=\"\" />"; 

因此,如果用户包括http://它不会增加它,如果用户不添加http://它会添加。

目前,它只有在用户无视http://

感谢

新年快乐工作!

回答

1

只需添加(http://)?

$pattern[1] = '~\[url\=(http://)?(.*?)\](.*?)\[/url\]~i'; 
$replace[1] = "<a href=\"http://$2\">$2</a>"; 

$pattern[2] = '~\[img\=(http://)?(.*?)\]~i'; 
$replace[2] = "<img src=\"http://$2\" alt=\"\" />"; 

BTW,为什么不使用字符作为分隔符,是不是在该模式已经?就像我在这里使用~

+0

现在就试试这个:)我只是用preg_replace'$ input = str_replace('http:// http://','http://' ,$ input);'但不是很漂亮 – cgweb87 2011-12-31 22:31:46

0

您可以使用替换为此,匹配/^(?!http:\/\/)/并用“http://”替换出现。

+0

只需将它添加为数组的另一部分? – cgweb87 2011-12-31 22:08:55

+0

这不太合适?!?我将上传我如何修复它... – cgweb87 2011-12-31 22:29:42

1

试试这个:

// URLS 
$pattern[1] = '/\[url\=([a-z][a-z0-9+\-.]*):(.*?)\](.*?)\[\/url\]/i'; 
$replace[1] = "<a href=\"$1:$2\">$3</a>"; 
// IMAGES 
$pattern[2] = '/\[img\=([a-z][a-z0-9+\-.]*):(.*?)\]/i'; 
$replace[2] = "<img src=\"$1:$2\" alt=\"\" />";