Я пытаюсь написать плагин WordPress для извлечения строки об авторских правах по URL-адресу веб-сайта. Строка, содержащаяся на HTML-странице данного веб-сайта:
"© 2024 • Printing & Publishing Co., Inc. • All Rights Reserved"
и в моем плагине PHP он закодирован как:
"u00a9 2024 u00a0 u2022 u00a0 Printing & Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved"
Это похоже на кодировку UTF-16 без начального "\" или "0x". Конфигурация расширения iconv, возвращаемая iconv_get_encoding:
[input_encoding] => UTF-8
[output_encoding] => UTF-8
[internal_encoding] => UTF-8
В HTML-коде веб-сайта указан набор символов charset="UTF-8".
Я пробовал всевозможные варианты html_entity_decode. , mb_convert_encoding и даже сопоставление регулярных выражений для "'/u([0-9a-fA-F]{4})/'" для перехвата этих, казалось бы, символов в кодировке UTF-16, но все безрезультатно. Я продолжаю получать:
"u00a9 2024 u00a0 u2022 u00a0 Printing & Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved"
или
"u00a9 2024 u00a0 u2022 u00a0 Printing u0026 Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved"
в зависимости от того, использовал ли я html_entity_decode или нет.
Я заметил, что следующий код дает аналогичный результат:
$char = "©";
$result[] = "# ©";
$result[] = "# " . $char;
$result[] = "# \u00a9";
На выходе я получаю:
# u00a9
# u00a9
# u00a9
Я считаю, что это три разных способа получить один и тот же результат.
Вот как я пытался использовать preg_replace_callback для решения этой проблемы:
$string = "© 2024 • Printing & Publishing Co., Inc. • All Rights Reserved";
$result[] = $string;
$result[] = preg_replace_callback('/u([0-9a-fA-F]{4})/', 'unicodeToUtf8', $string);
function unicodeToUtf8($matches) {
$codepoint = hexdec($matches[1]);
return mb_convert_encoding("&#{$codepoint};", 'UTF-8', 'HTML-ENTITIES');
}
Вывод остается:
[0] => u00a9 2024 u00a0 u2022 u00a0 Printing & Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved
[1] => u00a9 2024 u00a0 u2022 u00a0 Printing & Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved
Я тоже пробовал:
$result[] = str_replace("u00a9", "©", $string);
$result[] = str_replace("\u00a9", "©", $string);
С теми же результатами:
[0] => u00a9 2024 u00a0 u2022 u00a0 Printing & Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved
[1] => u00a9 2024 u00a0 u2022 u00a0 Printing & Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved
Будем очень признательны за любую информацию о том, как обращаться с этими кодировками символов. Я предполагаю, что мой основной вопрос заключается в том, что если внутренняя_кодировка - UTF-8, почему эти кодовые точки состоят из 4 символов вместо 2?
Я нашел очень неуклюжий подход, определенно не мое предпочтительное решение:
Я нашел очень неуклюжий подход, определенно не мое предпочтительное решение:
р>
$string = "© 2024 • Printing & Publishing Co., Inc. • All Rights Reserved";
$result = html_entity_decode($string);
$result = str_replace('©', '(c)', $result);
$result = str_replace('•', '-', $result);
$result = str_replace('–', '-', $result);
$result = str_replace('&', '&', $result);
$result = str_replace('®', '(r)', $result);
Генерирует следующее:
"(c) 2024 - Printing & Publishing Co., Inc. - All Rights Reserved"
Мне определенно хотелось бы найти более элегантное решение.
Кодирование и декодирование строки осуществляется с помощью следующего кода (обычно совпадение только одно):
$response = wp_remote_get($url);
$html = wp_remote_retrieve_body($response);
$regex = "/>[^>]*© [0-9]{4}[^
Подробнее здесь: https://stackoverflow.com/questions/793 ... php-plugin
Проблемы с кодировкой символов в плагине WordPress PHP ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1736205383
Anonymous
Я пытаюсь написать плагин WordPress для извлечения строки об авторских правах по URL-адресу веб-сайта. Строка, содержащаяся на HTML-странице данного веб-сайта:
"© 2024 • Printing & Publishing Co., Inc. • All Rights Reserved"
и в моем плагине PHP он закодирован как:
"u00a9 2024 u00a0 u2022 u00a0 Printing & Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved"
Это похоже на кодировку UTF-16 без начального "\" или "0x". Конфигурация расширения iconv, возвращаемая iconv_get_encoding:
[input_encoding] => UTF-8
[output_encoding] => UTF-8
[internal_encoding] => UTF-8
В HTML-коде веб-сайта указан набор символов charset="UTF-8".
Я пробовал всевозможные варианты html_entity_decode. , mb_convert_encoding и даже сопоставление регулярных выражений для "'/u([0-9a-fA-F]{4})/'" для перехвата этих, казалось бы, символов в кодировке UTF-16, но все безрезультатно. Я продолжаю получать:
"u00a9 2024 u00a0 u2022 u00a0 Printing & Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved"
или
"u00a9 2024 u00a0 u2022 u00a0 Printing u0026 Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved"
в зависимости от того, использовал ли я html_entity_decode или нет.
Я заметил, что следующий код дает аналогичный результат:
$char = "©";
$result[] = "# ©";
$result[] = "# " . $char;
$result[] = "# \u00a9";
На выходе я получаю:
# u00a9
# u00a9
# u00a9
Я считаю, что это три разных способа получить один и тот же результат.
Вот как я пытался использовать preg_replace_callback для решения этой проблемы:
$string = "© 2024 • Printing & Publishing Co., Inc. • All Rights Reserved";
$result[] = $string;
$result[] = preg_replace_callback('/u([0-9a-fA-F]{4})/', 'unicodeToUtf8', $string);
function unicodeToUtf8($matches) {
$codepoint = hexdec($matches[1]);
return mb_convert_encoding("&#{$codepoint};", 'UTF-8', 'HTML-ENTITIES');
}
Вывод остается:
[0] => u00a9 2024 u00a0 u2022 u00a0 Printing & Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved
[1] => u00a9 2024 u00a0 u2022 u00a0 Printing & Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved
Я тоже пробовал:
$result[] = str_replace("u00a9", "©", $string);
$result[] = str_replace("\u00a9", "©", $string);
С теми же результатами:
[0] => u00a9 2024 u00a0 u2022 u00a0 Printing & Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved
[1] => u00a9 2024 u00a0 u2022 u00a0 Printing & Publishing Co., Inc. u00a0 u2022 u00a0 All Rights Reserved
Будем очень признательны за любую информацию о том, как обращаться с этими кодировками символов. Я предполагаю, что мой основной вопрос заключается в том, что если внутренняя_кодировка - UTF-8, почему эти кодовые точки состоят из 4 символов вместо 2?
Я нашел очень неуклюжий подход, определенно не мое предпочтительное решение:
Я нашел очень неуклюжий подход, определенно не мое предпочтительное решение:
р>
$string = "© 2024 • Printing & Publishing Co., Inc. • All Rights Reserved";
$result = html_entity_decode($string);
$result = str_replace('©', '(c)', $result);
$result = str_replace('•', '-', $result);
$result = str_replace('–', '-', $result);
$result = str_replace('&', '&', $result);
$result = str_replace('®', '(r)', $result);
Генерирует следующее:
"(c) 2024 - Printing & Publishing Co., Inc. - All Rights Reserved"
Мне определенно хотелось бы найти более элегантное решение.
Кодирование и декодирование строки осуществляется с помощью следующего кода (обычно совпадение только одно):
$response = wp_remote_get($url);
$html = wp_remote_retrieve_body($response);
$regex = "/>[^>]*© [0-9]{4}[^
Подробнее здесь: [url]https://stackoverflow.com/questions/79331177/problems-with-character-encoding-in-wordpress-php-plugin[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия