PHP preg_replace:删除字符串开头和结尾的标点符号。

7
在PHP中,我可以使用什么正则表达式来从字符串的开头和结尾删除所有标点符号?

同时发布您的尝试也是有帮助的。 - Kamil Sindi
1
我对正则表达式很陌生,不知道从哪里开始。 - Alasdair
4个回答

10
我不会使用正则表达式,可能会用类似于...的东西。
$str = trim($str, '"\'');

第二个参数是您定义的标点符号

假设您真正想要的是去除不是字母、数字等的内容,那么我建议使用...

$str = preg_replace('/^\PL+|\PL\z/', '', $str);

更好的是,我没有想到那个。 - Alasdair
1
trim 函数的第二个参数正是我所需要的。 - Alasdair

8
可能取决于您对标点符号的定义。如果是“除了字母数字之外的任何东西”或类似的内容,则正则表达式可能是最好的选择。但是,如果它是“句点、问号和感叹号”或其他可管理的列表,那么以下内容更容易理解:
trim($string, '?!.');

4
取决于你所称呼的标点符号是什么,但通常而言:
preg_replace('/^\W*(.+?)\W*$/', '$1', $source);

这是一个有趣的正则表达式...你确定它会起作用吗? - alex
@alex:不用了,已经修好了 :) 不过 trim 更好。 - Ry-
我还是觉得有点不对,你可能想把这些字符放在一个字符类中,例如 [;.] - alex
只要您不期望任何ASCII范围之外的字符 :P - alex

0

保留只包含字母和数字的字符

preg_replace('/[^a-z0-9]+/i', '', $string);

对于所有标点符号:

preg_replace('[:punct:]+', '', $string);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接