我有一个包含非法字符的字符串。例如:
"The Reverend Mr. Hooper is conversing with his fiancée, Elizabeth."
PHP中是否有正则表达式替换语句将根据某些条件进行替换?条件就是这样,
if((word starts with << & >> ) AND
(next to << & >> is not
(<< amp; >> OR <<<>> OR <<>>> OR <<">> OR <<'>>)))
{
replace << & >> with << & >>
}
答案 0 :(得分:1)
这看起来非常像XY problem。您似乎希望将带有HTML字符实体的文本放入XML中,其中只预定了几个实体。如果它是这样的,你应该将HTML文本编码为UTF-8字符串,然后可以直接存储在XML中。
但是如果出于任何其他原因需要这个,你可以做到
$result = preg_replace('/&(?!amp;|[lg]t;|quot;|#39)/s', '&', $subject);