我想要删除任何非字母数字的内容,无论小写或大写,并替换为' &#39 ;.但是有一些例外。
例外
'!?
但允许单引号是一件令人头疼的事情,我已经在Stack-overflow中搜索了很多,但没有找到符合我要求的答案。
$ text = preg_replace(' / [^ \ da-z!\'?。] / i','',$ text);
我尝试了上面的正则表达式,但它也替换了单引号。但我需要保留它并用空的空格替换所有其他非字母数字字符。有人可以帮我吗?
例如:
$builder->get('issueType')
->addModelTransformer(new CallbackTransformer(
function ($type) {
// your logic here
return $type;
},
function ($type) {
// your logic here
return $type;
}
));
答案 0 :(得分:1)
您可以在正则表达式中使用NOT模式:
<?php
echo implode(' ', preg_split('#[^a-z0-9\.\?\'!]#i', $input));
您无法以简单的方式使用preg_replace一次替换所有内容。但是你可以在正则表达式上爆炸并用空格破坏它们。
解释正则表达式:
#是分隔符
[]组成一个组
^组内的所有内容都不匹配(逆变器)
a-z不匹配字符a到z
0-9匹配字符0到9
其他字符已转义。
我标记以使匹配大小写不敏感。