preg_replace удаляет специальные символы, амперсанд и изменения в числах

Я использую pregmatch:

$titleClass = str_replace(' ', '-', get_the_title());
$titleClass = preg_replace('/[^a-zA-Z0-9]/', '', strtolower($titleClass));
$titleClass = preg_replace('/-+/', '-', $titleClass);

Я использую WordPress да, но так как это должно быть просто строкой, я подумал, что могу спросить об этом здесь. Всякий раз, когда я использую этот pregmatch вывод $titleClass заменяет амперсанд на 038 есть идеи как его убрать? На символах типа «|» это работает отлично.

0

Решение

Похоже, ваш амперсанд превращается в htmlentity &038;, После того, как вы сделаете замену, ваш скрипт удалит все символы, кроме цифр и латинских символов. Так &038; преобразуется в 038,

Вы можете проверить, верно ли это, выводя результат get_the_title() функционировать, прежде чем делать какие-либо замены.

Чтобы удалить его, вы можете использовать функцию html_entity_decode () перед выполнением замены:
http://php.net/manual/en/function.html-entity-decode.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]