php - 如何删除前导和尾随非字母数字字符

标签 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#`

但是我怎样才能同时完成这两者呢?

最佳答案

尝试使用 ^\W+|\W+$ 模式,如下所示:

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

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

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

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

关于php - 如何删除前导和尾随非字母数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21871280/

相关文章:

php - $.post 出现问题

regex - 使用 Asp.Net Core 中间件将非 WWW 重定向到 WWW

mysql - 从不规则格式的字符串中间返回数字

php - 在 php 中读取然后覆盖文件内容的最佳方法是什么?

php - 在很多行中将值增加 1

php - 使用 PDO 回显显示表中的所有行

javascript - 如何在不使用 for 循环的情况下在 jQuery 中同时删除多个 tr

ruby - 如何从字符串中提取字符串?

python - 正则表达式:将子字符串替换为多个单词形式

regex - 正则表达式,用于从路径中提取文件名