我需要使用此PHP snippet将&
转换为&符号。我正在使用与Paul Dixon编写的完全相同的测试代码,但在我的代码中没有替换&符号。为什么?我使用的是PHP 5.2.6。
$str_fix = preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $str);
以下,更简单但不正确(它还将替换&
中的&
)正则表达式:
$str_fix = preg_replace('/&/', '&', $str);
编辑:Damnit,问题不是regexp / PHP相关而是Drupal!是的,我在Drupal模块中使用此代码段,由于某种原因,Drupal会将&
转换为&
。
答案 0 :(得分:1)
如果Drupal用&
替换&
,你可以双重逃避实体:
$str_fix = preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $str);
然后Drupal将输出&
,这是您想要的结果。
答案 1 :(得分:0)
使用str_replace('&','& amp;',$ str)怎么样?
答案 2 :(得分:0)
你能给我们一个示例输入字符串吗?
echo preg_replace('/&(?!#?[a-z0-9]+;)/', '&', "Dogs & Cats & budgies\n");
正确生成
Dogs & Cats & budgies