首页 > 解决方案 > 从字符串的开头删除一些特殊字符

问题描述

我想从字符串的开头删除特殊字符。

例如:我的字符串:

- - Testing

那么,应该是

Testing

我试过的

trim($string, '-');

但是,它不起作用。我需要做什么?

标签: phpregex

解决方案


如果您打算删除任何符号和空格,请使用

preg_replace('~^[\p{S}\p{P}\s]+~u', '', $s)

在这里,\p{S}匹配任何符号,\p{P}匹配任何正确的标点符号\s并将匹配任何空格(由于u标志,它将匹配任何 Unicode 空格)。

要删除任何非单词字符,请使用'~^\W+~'(将删除非 ASCII 字母)或'~^\W+~u'(将保持重音字符完整)模式。

如果您只打算在字符串开头删除空格和连字符,请使用

preg_replace('~^[\s-]+~', '', $s)

查看正则表达式演示

^[\s-]+模式匹配字符串开头的一个或多个空格或连字符。

一些变化:

  • '~^[ -]+~'- 只会删除字符串开头的常规空格和连字符
  • '~^[\h-]+~m'- 将删除字符串每一行上的所有连字符和水平空格
  • '~^[\h-]+~'- 将仅删除第一行的所有连字符和水平空格

推荐阅读