我想从我导入的文本块中删除所有标点符号,除了',例如“in for”。
我现在有
$words =preg_replace(‘/^a+/i’,'',$words);
去掉所有标点符号,但我不知道如何包括‘。
我怎样才能做到这一点?
发布于 2013-03-11 08:06:02
试试看
preg_replace( '/[^\w\']+|\'(?!\w)|(?<!\w)\'/', '', $words )这应该替换所有的非字母,也应该替换一个单词之外的单个撇号。
还没有经过测试,请告诉我它是否有效。
更新
要删除数字,只需使用此正则表达式即可。
/[^\w\']+|\'(?!\w)|(?<!\w)\'|\d+/刚刚添加了\d+,因此数字匹配,并将被删除
发布于 2013-03-11 08:25:35
若要使用unicode属性删除标点符号,请执行以下操作:
preg_replace('/\p{Punctuation}+/u', '', $words);或
preg_replace('/\p{P}+/u', '', $words);删除除单引号外的所有标点符号:
preg_replace("/[^\P{P}']+/u", '', $words);看看这里。
发布于 2013-03-11 08:25:49
您可以使用
(?!')\p{P}除撇号外与任何标点符号匹配。例如。
preg_replace('/(?!\')\p{P}/gu', '', $str);https://stackoverflow.com/questions/15333680
复制相似问题