Intereting Posts
Используя шаблон Data Mapper, должны ли объекты (объекты домена) знать о Mapper? Автозагрузчик ZF2: используйте фабрику для базового класса на расширенных классах Как применить класс CSS в зависимости от значения, содержащегося в переменной PHP? Можно ли захватить вывод эха в PHP? как использовать cURL в facebook graph api request wkhtmltopdf – libfontconfig.so.1: невозможно открыть файл общих объектов Ссылка на чтение человеком в PHP, например «последний понедельник» Magento – Неустранимая ошибка: вызов функции-члена getBackend () для не-объекта в app / code / core / Mage / Eav / Model / Entity / Abstract.php в строке 816 Проблема API BigCommerce со значением страницы Любые ошибки с этим регулярным выражением, которые соответствуют амперсандам, которые еще не закодированы Использование активного каталога для аутентификации пользователей на сайте интрасети CORS с заголовками php Yii2: Как показать проверенные значения в CheckboxList Виртуальный хост Apache без доменного имени Создайте папку, если она еще не существует.

PHP preg_replace специальные символы

Я хочу заменить все буквы без буквы и числа, т. Е. /&%#$ т.д. с подчеркиванием (_) и заменить все ' (одинарные кавычки) на " «пустое (поэтому нет подчеркивания).

Так что « Там не было бы » (без учета двойных кавычек) станет « There_wouldnt_be_any ».

Я бесполезен в рег-выражениях, следовательно, пост.

ура

 $newstr = preg_replace('/[^a-zA-Z0-9\']/', '_', "There wouldn't be any"); $newstr = str_replace("'", '', $newstr); 

Я поставил их на две отдельные строки, чтобы сделать код более понятным.

Примечание. Если вы ищете поддержку Unicode, см. Ниже ответ Филипа. Он будет соответствовать всем символам, которые регистрируются как буквы в дополнение к Az .

Если вы, написав « не буквы и цифры », исключаете больше, чем [A-Za-z0-9] (т. åäö буквы типа åäö ) и хотите иметь возможность точно обрабатывать строки UTF-8 \p{L} и \p{N} .

  1. \p{N} будет соответствовать любому " Number "
  2. \p{L} будет соответствовать любому символу буквы , который включает
    • Строчная буква
    • Письмо-модификатор
    • Другое письмо
    • Письмо с заголовком
    • Прописная буква

Документация PHP: свойства символов в Юникоде


 $data = "Thäre!wouldn't%bé#äny"; $new_data = str_replace ("'", "", $data); $new_data = preg_replace ('/[^\p{L}\p{N}]/u', '_', $new_data); var_dump ( $new_data ); 

вывод

 string(23) "Thäre_wouldnt_bé_äny" 

сделайте это в два этапа:

  1. замените буквенные символы этим регулярным выражением:

    [\/\&%#\$]

  2. замените кавычки этим регулярным выражением:

    [\"\']

и используйте preg_replace :

 $stringWithoutNonLetterCharacters = preg_replace("/[\/\&%#\$]/", "_", $yourString); $stringWithQuotesReplacedWithSpaces = preg_replace("/[\"\']/", " ", $stringWithoutNonLetterCharacters);