Я пытаюсь удалить через регулярное выражение все, кроме буквенно-цифровых символов и пробелов.
Вот конверсия, которую я надеюсь достичь.
"I am a string" → "I am a string" "How are you?" → "How are you" "#53-Jeff" → "53-Jeff"
Пока у меня это:
return preg_replace("/[^0-9a-zA-Z]/","", $val);
Но, будучи новичком в регулярном выражении, я не могу понять, как вставить пространство. У меня были странные результаты, когда я пытался.
Вставка пространства так же просто, как вы ожидаете:
preg_replace("/[^0-9a-zA-Z ]/", "", $val);
Btw. ваш третий пример мне не ясен: вы хотите заменить -
тоже? Если нет, вам нужно добавить его также в список символов.
См. Это для примера.
Это должно работать:
preg_replace("/[^0-9a-zA-Z -]/", "", $val);
Имейте в виду, чтобы добавить «-» к самому концу блока набора символов, или его можно интерпретировать как оператор диапазона.
В зависимости от ваших флагов регулярного выражения (если разрешены пробелы / комментарии) вам может потребоваться заменить " "
(прямо перед "-"
) с помощью "\s"
или (более строгого) "\ "
.