从字符串开头删除一些特殊字符

时间:2019-12-20 10:43:07

标签: php regex

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

例如:我的字符串:

- - Testing

那应该是

Testing
  

我尝试了什么

trim($string, '-');

但是,它不起作用。我该怎么办?

2 个答案:

答案 0 :(得分:3)

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

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

此处,\p{S}匹配任何符号,\p{P}匹配任何标点符号,并且\s将匹配任何空格(由于u标志,它将匹配任何Unicode空格)

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

如果您仅计划删除字符串开头的空格和连字符,请使用

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

请参见regex demo

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

一些变化:

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

答案 1 :(得分:2)

您需要在character mask parameter中包括空格。

trim($string, '- ');
// -------------^^---


// or add - along with default value from docs
trim($string, '- \t\n\r\0\x0B');
// -------------^^^^^^^^^^^^^---