'/(^ ¦>)([^ <]+)(?= < ¦$)/sUe
模式的意思:
(^ ¦>)以空格开头或>开头
([^ <]+)     查以不包括空格和<的字符一个或多个
(?= < ¦$)  正则预查,非获取,即如果后面的字符是空格或$sUe    修正符 ,查手册去总体意思,查找一个字符串,该字串以空格或>开头,中间没有空格或<,字符串的后面为字串为空格或$(^ ¦>)
([^ <]+)
上面为子匹配

解决方案 »

  1.   

    http://www.rubular.com/
    到正则表达式网站上去测试一下。
      

  2.   

    preg_replace('/(^ ¦>)([^ <]+)(?= < ¦$)/sUe', "highlight('\\2',\$words, \$hrefs, '\\1', 'me')", $string); 
    这个替换是这样的\\2 指的是([^ <]+)(?= < ¦$)中内容
    \\1指的是(^ ¦>)中内容替换后,好象是个编辑器加亮的函数
      

  3.   

    谢谢大家!~~LS说的是啊 是编辑器加亮 
    可郁闷的是
    这个是全部替换
    我不知道怎么改成用preg_replace 可以控制替换的次数的
    现在文章中出现某关键字 不管多少次 都替换成链接+高亮了
    有时候一篇文章里很多链接 
    请高手再帮帮忙 看怎么才能替换1个或者自己可以控制次数的啊我改成这样也不行
    $string = preg_replace($words, ' <a href="'.$hrefs.'">'.$words.' </a>', $string,1); 这个函数我实在是没弄懂~~虽然知道他是做什么的~
      

  4.   

    preg_replace好象不行控制次数
    得自写函数吧
    如你正则匹配多少数组,你定义函数操作数组(按要求替换)其他只能用str_replace()
      

  5.   

    mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
    看手册,应是可以的limit
      

  6.   

    回楼上的 是可以限制
    但我感觉这个函数不是这么简单~因为在函数里面还调用了本身这个函数!~$string = preg_replace('/(^ ¦>)([^ <]+)(?= < ¦$)/sUe', "highlight('\\2',\$word, \$hrefs[\$k], '\\1', 'me')", $string); 
     用了没用!~~我改成这样也不行 
    $string = preg_replace($words, ' <a href="'.$hrefs.'">'.$words.' </a>', $string,1); 
      

  7.   

    $words是变量还是字符,是字符要加引号,是变量要先打印内容看看
      

  8.   

    是数组!
    if(is_array($words)){
    $hrefs也是