Php заменить символы, соответствующие регулярному выражению - PullRequest
2 голосов
/ 10 декабря 2011

Я пытался использовать метод preg_replace для замены соответствующего регулярного выражения, но получаю сообщение об ошибке

"Предупреждение: preg_replace (): не найден конечный разделитель '_'"

$oldString = "";
$newString = preg_replace("/[^a-z0-9_]/ig", "", $oldString);

Здесь я пытаюсь удалить все символы, кроме букв, цифр и подчеркивания.

Ответы [ 4 ]

1 голос
/ 10 декабря 2011

g не поддерживается в PHP, удалить модификатор g (глобальный).
Вот список поддерживаемых модификаторов

1 голос
/ 10 декабря 2011

Я думаю, что php не нравится элемент управления g char после вашего трейлинга /.У меня были проблемы с этим, и удаление г, кажется, помогает.preg_replace имеет необязательные параметры, которые он принимает после строки, которую вы хотите увеличить, где вы контролируете, сколько раз вы хотите ограничить поиск, по умолчанию он глобальный.

В руководстве сказано, что вы установите предел с помощью 4-го параметра (лимита), и, если хотите, вы можете передать 5-й счетный параметр, который даст вам количество разнашел совпадение.

За мои деньги это просто еще одна вещь, которую PHP делает 1/2 правильно, и все это сводится к тому, что это почти идеальный язык.Но это ни здесь, ни там :)

О, и добро пожаловать в стек!:)

0 голосов
/ 10 декабря 2011

В RegEx \W означает любые не-буквенно-цифровые символы подчеркивания.Имейте в виду, это также заменит пробелы.

$oldString = "This, is not _all_ alpha-numeric";
$newString = preg_replace("/\W+/", "", $oldString);
# Gives "Thisisnot_all_alphanumeric"

$newString = preg_replace("/[^\w ]+/", "", $oldString);
# Gives "This is not _all_ alphanumeric"
0 голосов
/ 10 декабря 2011

Прежде всего, нет модификатора g для preg_replace.

$oldString = "";
$newString = preg_replace("/[^a-z0-9_]*/i", "", $oldString);

Во-вторых, попробуйте поставить множитель после класса персонажа, чтобы заменить более 1 символа.

...