正则表达式在某些条件下找到替换

时间:2014-05-30 13:23:46

标签: php regex preg-replace

我有一个包含非法字符的字符串。例如:

"The Reverend Mr. Hooper is conversing with his fiancée, Elizabeth."

PHP中是否有正则表达式替换语句将根据某些条件进行替换?条件就是这样,

if((word starts with  << & >> ) AND 
      (next to << & >> is not 
          (<< amp; >> OR <<&lt;>> OR <<&gt;>> OR <<&quot;>> OR <<&#39>>)))
          {
              replace << & >>  with << &amp; >> 
          }

1 个答案:

答案 0 :(得分:1)

这看起来非常像XY problem。您似乎希望将带有HTML字符实体的文本放入XML中,其中只预定了几个实体。如果它是这样的,你应该将HTML文本编码为UTF-8字符串,然后可以直接存储在XML中。

但是如果出于任何其他原因需要这个,你可以做到

$result = preg_replace('/&(?!amp;|[lg]t;|quot;|#39)/s', '&amp;', $subject);