PHP Regex 匹配字符串中的单词,不包括一个特定单词

标签 php regex replace expression

我有一个文本($txt),一个单词数组($words)我想添加一个链接和一个不能被替换的单词($wordToExclude)。

$words = array ('adipiscing','molestie','fringilla');
$wordToExclude = 'consectetur adipiscing';


$txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque
mattis tincidunt dolor sed consequat. Sed rutrum, mauris convallis bibendum 
dignissim, ligula sem molestie massa, vitae condimentum neque sem non tellus.
Aenean dolor enim, cursus vel sodales ac, condimentum ac erat. Quisque
lobortis libero nec arcu fringilla imperdiet. Pellentesque commodo, 
arcu et dictum tincidunt, ipsum elit molestie ipsum, ut ultricies nisl
neque in velit. Curabitur luctus dui id urna consequat vitae mattis
turpis pretium. Donec nec adipiscing velit.'

我想得到这个结果:

$txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque
mattis tincidunt dolor sed consequat. Sed rutrum, mauris convallis bibendum 
dignissim, ligula sem <a href="#">molestie</a> massa, vitae condimentum neque sem non tellus.
Aenean dolor enim, cursus vel sodales ac, condimentum ac erat. Quisque
lobortis libero nec arcu <a href="#">fringilla</a> imperdiet. Pellentesque commodo, 
arcu et dictum tincidunt, ipsum elit <a href="#">molestie</a> ipsum, ut ultricies nisl
neque in velit. Curabitur luctus dui id urna consequat vitae mattis
turpis pretium. Donec nec <a href="#">adipiscing</a> velit.'

最佳答案

$result = preg_replace(
    '/\b                 # Word boundary
    (                    # Match one of the following:
     (?<!consectetur\s)  #  (unless preceded by "consectetur "
     adipiscing          #  adipiscing
    |                    # or
     molestie            #  molestie
    |                    # etc.
     fringilla
    )                    # End of alternation
    \b                   # Word boundary
    /ix', 
    '<a href="#">\1</a>', $subject);

关于PHP Regex 匹配字符串中的单词,不包括一个特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7514555/

相关文章:

php - 对不同表中的相同字段进行排序

sql - 使用 SQL PATINDEX 提取字符串,不同大小的子字符串

java - 修改字符串时的意外行为

php - 显示旧响应的 Jquery ajax 请求

php - 加载iframe(谷歌地图)存储在从mysql加载到链接div中的变量中

Python正则表达式从句末的数字中删除句点

python - 使用正则表达式重新排序字符串

html - 使用 REGEX 匹配两个 HTML 标签之间的所有代码

javascript - ajax脚本不更新信息

Python Regex 获取括号内的所有内容,除非在引号中