如何去除开头和结尾的非字母数字字符

4

我希望能够从字符串中“修剪”非字母数字字符,类似于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个回答

7

尝试使用这样的^\W+|\W+$模式:

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

这将替换字符串开头或结尾的任何非字母数字字符(注意,不包括下划线)。 | 是一个可选项,它将匹配与左侧模式或右侧模式匹配的任何字符串。 ^ 匹配字符串的开头。

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

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

1
你不需要正则表达式,使用trim()并指定要修剪的内容即可(它默认修剪空格):
$string = trim($string, "#");

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


哈!Touché。不幸的是我的实际情况并不那么简单明了。 - Ryan
啊,好吧,那就用正则表达式吧! - scrowler

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