2011-11-27 183 views

回答

6

我不会用正则表达式,大概就像...

$str = trim($str, '"\''); 

当第二个参数是你定义什么如标点符号

假设你的真正用意去掉的东西是不字母,数字等,我会用...

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

更好,没有想到这一点。 – Alasdair

+1

修正第二个参数正是我正在寻找的。 – Alasdair

3

这取决于你所说的标点符号,但:

preg_replace('/^\W*(.+?)\W*$/', '$1', $source); 
+0

这是一个有趣的正则表达式......你确定这会起作用吗? – alex

+0

@alex:不,现在修正:)但是'trim'反正好得多。 – Ryan

+0

我仍然认为它有点偏差,你可能想把这些字符放在角色类中,例如'[;]'。 – alex

0

去只保留字母数字字符

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

为所有ponctuations:

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

可能取决于您对标点符号的定义。如果它只是“字母数字”或其他类似的东西,那么正则表达式可能就是要走的路。但是,如果是“期间,问号和感叹号”或其他易于理解的列表,则会更容易理解:

trim($string, '?!.'); 
相关问题