我要从字符串开头删除特殊字符。
例如:我的字符串:
- - Testing
那应该是
Testing
我尝试了什么
trim($string, '-');
但是,它不起作用。我该怎么办?
答案 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');
// -------------^^^^^^^^^^^^^---