'/(^ ¦>)([^ <]+)(?= < ¦$)/sUe
模式的意思:
(^ ¦>)以空格开头或>开头
([^ <]+) 查以不包括空格和<的字符一个或多个
(?= < ¦$) 正则预查,非获取,即如果后面的字符是空格或$sUe 修正符 ,查手册去总体意思,查找一个字符串,该字串以空格或>开头,中间没有空格或<,字符串的后面为字串为空格或$(^ ¦>)
([^ <]+)
上面为子匹配
模式的意思:
(^ ¦>)以空格开头或>开头
([^ <]+) 查以不包括空格和<的字符一个或多个
(?= < ¦$) 正则预查,非获取,即如果后面的字符是空格或$sUe 修正符 ,查手册去总体意思,查找一个字符串,该字串以空格或>开头,中间没有空格或<,字符串的后面为字串为空格或$(^ ¦>)
([^ <]+)
上面为子匹配
到正则表达式网站上去测试一下。
这个替换是这样的\\2 指的是([^ <]+)(?= < ¦$)中内容
\\1指的是(^ ¦>)中内容替换后,好象是个编辑器加亮的函数
可郁闷的是
这个是全部替换
我不知道怎么改成用preg_replace 可以控制替换的次数的
现在文章中出现某关键字 不管多少次 都替换成链接+高亮了
有时候一篇文章里很多链接
请高手再帮帮忙 看怎么才能替换1个或者自己可以控制次数的啊我改成这样也不行
$string = preg_replace($words, ' <a href="'.$hrefs.'">'.$words.' </a>', $string,1); 这个函数我实在是没弄懂~~虽然知道他是做什么的~
得自写函数吧
如你正则匹配多少数组,你定义函数操作数组(按要求替换)其他只能用str_replace()
看手册,应是可以的limit
但我感觉这个函数不是这么简单~因为在函数里面还调用了本身这个函数!~$string = preg_replace('/(^ ¦>)([^ <]+)(?= < ¦$)/sUe', "highlight('\\2',\$word, \$hrefs[\$k], '\\1', 'me')", $string);
用了没用!~~我改成这样也不行
$string = preg_replace($words, ' <a href="'.$hrefs.'">'.$words.' </a>', $string,1);
if(is_array($words)){
$hrefs也是