修正一下上一篇文章中的错误:
代码如下:$value="http:www.domain1.com [IMG]http:www.domain2.com[/IMG] http:www.domain3.com";$str = eregi_replace("http://([a-zA-Z0-9.-:?=&\-]*)","\\0",$value);这种形式会得到结果如下:http://www.domain1.com [IMG]http://www.domain2.com[/IMG] [URL=http://www.domain3.com]http:www.domain3.com[/URL]而我希望得到的结果是:http://www.domain1.com [IMG]http://www.domain2.com[/IMG] http://www.domain3.com";domain2和domain3的不予转换。
请问eregi_replace()里的正则表达式要怎么样写才好?我试了很久都搞不好。
代码如下:$value="http:www.domain1.com [IMG]http:www.domain2.com[/IMG] http:www.domain3.com";$str = eregi_replace("http://([a-zA-Z0-9.-:?=&\-]*)","\\0",$value);这种形式会得到结果如下:http://www.domain1.com [IMG]http://www.domain2.com[/IMG] [URL=http://www.domain3.com]http:www.domain3.com[/URL]而我希望得到的结果是:http://www.domain1.com [IMG]http://www.domain2.com[/IMG] http://www.domain3.com";domain2和domain3的不予转换。
请问eregi_replace()里的正则表达式要怎么样写才好?我试了很久都搞不好。
或许你可能是需要匹配[/tag]、[tag]间的内容
link的link就不转化,没有这两个标记的link就自动转化为link可以实现吗?
如$value="http://www.domain1.com [IMG]http://www.domain2.com[/IMG] http://www.domain3.com";
由于http://www.domain1.com之前什么都没有,所以不会替换,办法----追加一个空格或是其他字符到开头:)
如:
$value= ' '.$value;
这办法比较老土,还望高人指点
*/
//$value="[IMG]http://www.domain2.com[/IMG] http://www.domain3.com http://www.domain1.com";
$value=" http://www.domain1.com [IMG]http://www.domain2.com[/IMG] http://www.domain3.com";
$str = preg_replace('/[^\[\]\=](http:\/\/\w+(\.\w+)+)/','\\1',$value);
print_r($str);
<?php
$value="http://www.domain0.com[IMG]http://www.domain2.com[/IMG] http://www.domain3.com http://www.domain1.com";// 提取将要排除的标记
preg_match_all("/\[(\w+).*\].+\[\/\\1\]/iU",$value,$regs);
// 构造替换数组
foreach($regs[0] as $k=>$v) {
$p[$k] = "|".preg_quote($v)."|";
$r[$k] = "`$k`";
}
// 替换掉要排除的标记
$value = preg_replace($p,$r,$value);
// 对余下的做替换
$value = preg_replace("|http://([a-zA-Z0-9.-:?=&-]*)|i","\\0",$value);
// 准备复原
foreach($regs[0] as $k=>$v) {
$p[$k] = "/$r[$k]/";
$r[$k] = $v;
}
// 恢复要排除的标记
$value = preg_replace($p,$r,$value);echo $value;
?>
Warning: Empty regular expression in D:\test.php on line 12的错误。
没有标记时$regs[0]为空数组