Заголовок PHP preg_replace (неанглийские символы), чтобы очистить слизню, не работающую

Я пытаюсь превратить титры в пули

$string = "آزمون پادشاهی متحده";
$pattern = '/[`~!@#$%^&*()_|+=?;:..’“'"<>,€£¥•،٫؟»«{}[]\/]+/gi'
            $replacement = ''

            $slug = trim(preg_replace($pattern, $replacement, $string));
            $slug = str_replace(" ","-",$slug);

Конечным результатом должно быть пространство آزمون-پادشاهی-متحده замененное дефис.

Другой пример: Great Britain : слизь: great-britain

Как я могу решить?

Всего 1 ответ


Здесь необходимо применить следующие исправления:

  • Удалите шаблон соответствия обратной косой черты, то есть '\\'
  • Удалите g модификатор, поскольку он не поддерживается PHP preg_replace (он по умолчанию заменяет все вхождения на вход)
  • Добавьте модификатор u , чтобы включить механизм PCRE для анализа и шаблона, и ввода как строки Unicode.

использование

$string = "آزمون پادشاهی متحده";
$pattern = '/[`~!@#$%^&*()_|+=?;:..’“'"<>,€£¥•،٫؟»«{}[]\\/]+/ui'
$replacement = ''

 $slug = trim(preg_replace($pattern, $replacement, $string));
 $slug = str_replace(" ","-",$slug);
 echo $slug;

См. Демо-версию PHP .

Обратите внимание, что [ , = , { и } не являются специальными внутри класса символов и не требуют экранирования.


Есть идеи?

10000