包含一些文字 的变量$description
可能 也包含如下字符串:
!some_text_that_may_be_different_each_time!
我需要摆脱这些,所以我试过了:
$new_description = preg_replace("!.+?!", '', $description);
但没有运气。什么是摆脱这些字符串的好方法?
同时移除它们可能会留下额外的空间。例如:
Hi world how are ya !asdasdasdasdasd! blue chickens
会变成
Hi world how are ya blue chickens
正如您所看到的,ya
和blue
之间有2个空格。我希望这些也转向一个空间。
答案 0 :(得分:5)
试试像
这样的正则表达式/![^!]+! */
注意最后的“*”会占用它之后的任何空格。
编辑:此外,您没有在示例中使用表示正则表达式的/ /分隔符,这可能是您的测试不起作用的原因。我选择了[^!] +(字符串不包含'!')而不是。+ ?,这是一种不合适的匹配,出于习惯。我不确定它是否更快,但在这个例子中它可能并不重要。
答案 1 :(得分:1)
试试这个:
$new_description = preg_replace("/\s*![^!]+!/", '', $description);
如果之前有空格!你将替换它,因此你将只有一个空间(最后一个)。
请注意,您所做的是使用"!"
作为正则表达式的分隔符,因此它不匹配。
答案 2 :(得分:0)
实际上有一种简单的方法。只需替换感叹号之间的所有内容,然后用一个空格替换两个空格。
$new_description = preg_replace("!.*?!", '', $description);
$new_description = preg_replace(" +", ' ', $new_description);