如何删除PHP中的前导和尾随非字母数字字符?

时间:2014-02-19 04:47:02

标签: php regex

我希望从字符串中“修剪”非字母数字,类似于trim()如何处理空格。

帮助我将#str|ng#转换为str|ng

我可以删除尾随的非字母数字:

$string = preg_replace('/\W+$/', '', $string); // converts `#str|ng#` to `#str|ng`

领先于:

$string = preg_replace('/^\W+/', '', $string); // converts `#str|ng#` to `str|ng#`

但我怎样才能同时完成这两项工作?

2 个答案:

答案 0 :(得分:5)

尝试使用这样的模式:

$string = preg_replace('/^\W+|\W+$/', '', $string); 

这将替换出现在字符串开头或结尾的任何非单词字符(注意这不包括下划线)。 |是一个替代,它将匹配任何匹配左侧图案或右侧图案的字符串。

如果您还需要删除下划线,请使用如下字符类:

$string = preg_replace('/^[\W_]+|[\W_]+$/', '', $string); 

答案 1 :(得分:1)

您不需要正则表达式,使用trim()并指定要修剪的内容(默认情况下修剪空格):

$string = trim($string, "#");

文档:http://php.net/trim