str_replace не работает со странным персонажем - PullRequest
0 голосов
/ 23 июня 2019

Я получаю эту строку "Holder – 2pcs" из заголовка моего сообщения в Wordpress, используя функцию get_the_title(), затем я использую str_replace для замены символа "-", но не повезло!

str_replace("–","-","Holder – 2pcs");

любая помощь приветствуется!

Редактировать:

(Ответ на комментарии)

Мне пришлось сохранить текст из файла $title1=get_the_title(); в .txt, и я заметилчто - сохранено как – в текстовом файле ... затем я заменил str_replace("–","-","Holder – 2pcs") и все работает!проблема в том, что в моей базе данных wordpress заголовок содержит - char, как и должно, но затем, когда я использую get_the_title(); функцию wordpress в своем коде для получения заголовка, я получаю - char как - что в конечном итоге – я не знаюпочему get_the_title(); вызывает эту проблему!

Есть мысли?

Ответы [ 2 ]

0 голосов
/ 23 июня 2019

Ваша проблема вызвана тем, что ваш символ "-" является чем-то еще, что выглядит так же .

Шаг 1:

Убедитесь, что все , используятот же набор символов , от вашего MySQL к вашему PHP к вашему вводимому тексту.

$title1 = iconv(mb_detect_encoding(get_the_title(), mb_detect_order(), true), "UTF-8", get_the_title());

( ссылка )

Шаг 2:

Убедитесь, что вы преобразуете необработанную строку, а не кодированный HTML-вывод

$title2 = html_entity_decode($title1, ENT_NOQUOTES | ENT_HTML5, "UTF-8");

Шаг 3:

Запустите функцию str_replace(), как изначально пытались.Если существует ряд возможных символов «тире», вы можете создать массив:

$dashes = ['–','–','—','-'];
$title3 = str_replace($dashes,"-",$title2);

( ссылка )

0 голосов
/ 23 июня 2019

Код, которым вы поделились работает :

var_dump(str_replace("–","-","Holder – 2pcs"));

string(13) "Holder - 2pcs"

Если этого не произойдет, они действительно запускают что-то другое. Скорее всего, ваши входные данные содержат пробелы или HTML-объекты, и вы смотрите на них через очки браузера.

Попытка дальнейшей проверки ваших входных данных, например ::

header('Content-Type', 'text/plain');
var_dump("Holder – 2pcs", bin2hex("Holder – 2pcs"));
string(15) "Holder – 2pcs"
string(30) "486f6c64657220e280932032706373"
...