【发布时间】:2018-06-29 13:06:31
【问题描述】:
考虑以下几点:
$string = "Hello, there! Welcome to <>?@#$!& our site<!END!>";
我正在尝试删除除字母、数字、空格和“特殊标签”<!END!>之外的所有内容@
使用 preg_replace,我可以这样写:
$string = preg_replace("/[^A-Za-z0-9 ]/", "", $string);
删除除字母(大写和小写)、数字和空格之外的所有内容。现在,如果我还想忽略<!END!> 标签,理论上我可以这样写:
$string = preg_replace("/[^A-Za-z0-9 <!END!>]/", "", $string);
但是,这不会特别忽略标签<!END!>,而是它包含的任何字符。所以它将保留每个 和 !在 $string 中。
结果:
"Hello there! Welcome to <>! our site<!END!>"
但我想得到:
"Hello there Welcome to our site<!END!>"
根据我的研究,应该可以通过使用 \b 标签在 preg_replace 中包含要忽略的特定单词,但是 "/[^A-Za-z0-9 \b<!END!>\b]/" 给了我与上述相同的结果。
我做错了吗?
现场演示:http://sandbox.onlinephpfunctions.com/code/219dc36ab8aa7dfa16e8e623f5f4ba7f4b4b930d
【问题讨论】:
标签: php