我想从我导入的文本块中删除除 ' 之外的所有标点符号,例如 ' in 没有。
我目前有
$words = preg_replace('/[^az]+/i', '', $words);
哪个去掉了所有标点符号,但我不确定如何包含 '.
我怎样才能做到这一点?
要删除具有 unicode 属性的标点符号,请执行以下操作:
preg_replace('/\p{Punctuation}+/u', '', $words);
或者
preg_replace('/\p{P}+/u', '', $words);
要删除除单引号之外的所有标点符号:
preg_replace("/[^\P{P}']+/u", '', $words);
看看这里。
试试看
preg_replace( '/[^\w\']+|\'(?!\w)|(?<!\w)\'/', '', $words )
这应该替换单词之外的所有非字母和单撇号
尚未测试,请让我知道它是否有效
更新
要删除数字,也只需使用此正则表达式
/[^\w\']+|\'(?!\w)|(?<!\w)\'|\d+/
刚刚添加\d+
,所以数字匹配并将被删除
您可以使用
(?!')\p{P}
匹配除撇号以外的任何标点符号。例如
preg_replace('/(?!\')\p{P}/gu', '', $str);