php - preg_replace 一个没有跟随特定字符的字符

标签 php regex

我有一个字符串:

this &foo and&foo but not &#bar haius&#bar

所有“&foo”都应替换为“&foo”,“&#bar”应保持不变。 IE。应替换任何 & 后没有 # 的内容。有什么想法吗?

我尝试了以下方法,但效果不是很好......

preg_replace('/&*$[#]*$/', '&', "this &foo and&foo but not &#bar haius&#bar");

感谢您的帮助!

最佳答案

您可以使用否定前瞻来完成此操作,我为此添加了 amp,这样您就不会在已经存在的事件前面添加额外的 &

$text = preg_replace('/&(?!#|amp)/', '&', $text);

正则表达式:

&              '&'
(?!            look ahead to see if there is not:
  #            '#'
 |             OR
  amp          'amp'
)              end of look-ahead

参见 working demo

如果您只是想替换少量的特定字符串,请使用 str_replacestrtr

strtr($text, array('&foo' => '&foo'));

关于php - preg_replace 一个没有跟随特定字符的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20405704/

相关文章:

php - MYSQL中根据行号分配变量

php - 选择 mysql 查询中的前一个值

正则表达式 R : Word-boundary and separated characters

java - 将整个单词与前导或尾随特殊符号(如字符串中的美元)匹配

python正则表达式删除匹配的括号文件

php - 在 Laravel 表单验证后插入记录

php - 使用 Facebook 的 PHP SDK 或 API 解除好友关系或删除好友的任何方法?

JavaScript/jQuery 组合具有相同优先级的数字

php - 如何在特定页面上仅显示整个博客文章中的几行内容?

c# - 仅删除逗号前后的空格