Я хочу «обрезать» не буквенные символы из строки, аналогично тому, как 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#`
Но как я могу выполнить оба одновременно?
Попробуйте использовать такой шаблон:
$string = preg_replace('/^\W+|\W+$/', '', $string);
Это заменит любые символы, отличные от слов (обратите внимание, что это не включает символы подчеркивания), которые появляются либо в начале, либо в конце строки. |
это чередование, которое будет соответствовать любой строке, которая соответствует либо рисунку слева, либо рисунку справа.
Если вам также необходимо удалить символы подчеркивания, используйте класс символов следующим образом:
$string = preg_replace('/^[\W_]+|[\W_]+$/', '', $string);
Вам не нужно регулярное выражение, используйте trim()
и укажите, что нужно обрезать (по умолчанию он обрезает пробелы):
$string = trim($string, "#");
Документы: http://php.net/trim