文章内容:我是中国人,我喜欢上javaeye
填写的标签:中国
显示的效果是:我是 中国 人,我喜欢上javaeye
在显示的时候,我用正则表达式进行匹配是可以实现,但是如果文章中有图片的话,如 ,在匹配的时候也将alt里的“中国”也加上链接,结果图片不能正常显示
请教各位,如何能够不将图片进行匹配,这个正则应该怎么写,或者有什么其他的方法可以实现
[b]问题补充:[/b]
如果将
$content = '我爱3中国
换成
$content = '我爱3中国
结果alt中第一个“中国”可以转换成原来的,但第二个就不能转换,变成
我爱中国" >3中国
为什么?
现在可以了
[code="php"]
/**
@return string 替换后的字符串
*/
function replaceTag($content, $tag)
{
$s = preg_replace('/('. $tag .')/', '$1', $content );
$pattern = '/(]+?)'. $tag .'<\/a>/';
while (preg_match($pattern, $s)) {
$s = preg_replace($pattern, '$1' . $tag , $s);
}
return $s;
}
$content = '我爱3中国
我不爱3中国
';
echo replaceTag($content, '中国');
[/code]
[code="php"]
/**
}
$content = '我爱3中国
我不爱3中国
';
echo replaceTag($content, '中国');
[/code]
第一个函数错误是因为在进行第二步转换时,只匹配了第一个链接后的中国,然后第二个函数修正了这个问题。
一定要看明白这个正则啊,理解(]+?)代表什么意思