douli2876 2013-11-25 11:08
浏览 37
已采纳

PHP preg_replace:匹配包含短划线的单词

I am facing a problem searching words in a string and converting them into links. How to make a search that considers words containing a "-" as whole word and not as 2 words separated by "-" ?

Here is an example, if I search for the word "exhaustive", my search function will also match the part of the word "non-exhaustive", although i don't want this word to be matched.

$string = "Bla bla bla non-exhaustive blabla bla exhaustive";
$words = array('exhaustive','non-exhaustive');
foreach ($words as $word) {
    $string = preg_replace('/\b'.$word.'\b/i', '<a href=#>'.$word.'</a>',$string);
}

echo $string;

Result :

Bla bla bla non-exhaustive blabla bla exhaustive

Thank you very much for your help !

  • 写回答

1条回答 默认 最新

  • douwen1929 2013-11-25 11:14
    关注
    $string = preg_replace('/\b[^\-]' . preg_quote($word) . '\b/i', '<a href=#>' . $word . '</a>',$string);
    

    Should do the trick :)

    *edit, Aleks did beat me with just 2 sec :p

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?