Избавление от объектов HTML в веб-заголовке, сгенерированном в PHP

У меня есть веб-сайт с системой управления контентом GetSimple, написанной на PHP. Я отредактировал как мне было нужно, однако в шапке вот что там должно быть:

<title><?php get_page_clean_title(); ?> - <?php get_site_name(); ?></title>

Проблема в том, что я чех, и мне приходится использовать специальные символы (á, é, í, ó, ú, ů, ě, š и т. д.), и если бы вы открыли мой сайт и увидели исходный код, вы бы увидели это:

<title>Tomáš Janeček - osobní web - Tom**&aacute;&scaron;** Janeček | Personal Website</title>

Вместо «Томаш Янечек - особенный веб-Том*аш* Янечек | Личный сайт». Что меня беспокоит, так это те объекты HTML, которые находятся только во второй части заголовка. означает «á» и означает «š». Я знаю, что это не должно повредить SEO, но я делаю это, чтобы код оставался ясным.

Есть ли способ расшифровать это или просто изменить get_site_name() на какую-то лучшую функцию, которая не будет иметь проблем с этими дополнительными символами? Мне не нужны сущности в моем коде. Я думаю, что не этот конкретный файл .php надо править, чтобы он был таким, как я хочу, однако, надеюсь, можно было решить как-то просто в этом файле. CMS включает в себя десятки файлов .php, и я не уверен, что мне искать. Я искал некоторый код с сущностями PHP в «подозрительных» файлах, но ничего не нашел, что мне помогло. Если вам это нужно, всю CMS можно скачать здесь

Заранее благодарны за Вашу помощь.

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

Конечно, у меня эта мета включена.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

И нет, я не пользуюсь никакой базой данных. Это придет с изучением Joomla! :)

Я хочу подчеркнуть, что заголовок состоит из 2 частей — get_page_clean_title() и get_site_name(), обе они включают мое полное имя и только одна отображает его в исходном коде с объектами HTML.

Я нашел функции в другом файле:

ПЕРВЫЙ - это тот, который не помещает объекты HTML в исходный код - это то, что я хочу от второй функции ниже.

function get_page_clean_title($echo=true) {
global $title;
$myVar = strip_tags(strip_decode($title));

if ($echo) {
    echo $myVar;
} else {
    return $myVar;
}

}

Функция SECOND делает то, что должна делать, но выдает результат с объектами HTML, и в этом проблема.

function get_site_name($echo=true) {
global $SITENAME;
$myVar = trim(stripslashes($SITENAME));

if ($echo) {
    echo $myVar;
} else {
    return $myVar;
}

}

Обе указанные выше функции находятся в одном файле.

Я попытался заменить проблемную функцию на хорошо работающую с изменением имен переменных на правильные значения, однако она вообще перестала работать :/

Итак, в заключение, со всей страницей все в порядке, нет никаких HTML-сущностей, кроме одного места - второй половины заголовка с функцией get_site_name.

Кроме того, проблемы ТОЛЬКО в ИСХОДНОМ КОДЕ. Окончательное отображение в порядке.

Спасибо за ваши ответы до сих пор, я рад за такие быстрые и ценные ответы. Я это очень ценю.


person TeeJay    schedule 13.03.2013    source источник
comment
Откуда берется информация? Если это база данных, сохраняются ли оба значения (например, заголовок и имя сайта) одинаковым образом?   -  person jeroen    schedule 14.03.2013
comment
Нет, это не база данных. Первый заголовок из файла .PHP, а второй заголовок — это окончательный исходный код открытого рабочего веб-сайта.   -  person TeeJay    schedule 14.03.2013
comment
Затем вам нужно проверить источник данных и посмотреть, использует ли функция get_site_name() htmlentities.   -  person jeroen    schedule 14.03.2013
comment
Я сделал, как вы можете видеть выше в моем отредактированном комментарии. Впрочем, не знаю, все ли, файлов так много. Эти функции были найдены в themes_functions.php :)   -  person TeeJay    schedule 14.03.2013
comment
@TeeJay, где определяется $SITENAME и каково его значение?   -  person Ander2    schedule 14.03.2013
comment
Я просмотрел еще пару файлов с помощью Ctrl + F и нашел это: $SITENAME = stripslashes($dataw->SITENAME); :)   -  person TeeJay    schedule 14.03.2013


Ответы (2)


Я думаю, что у вас проблема с кодировкой. Если вы хотите, чтобы специальные символы отображались правильно, добавьте

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

в ваш файл html/php. Также убедитесь, что ваши данные закодированы в кодировке UTF-8.

Если вы получаете данные из базы данных MySQL, убедитесь, что столбцы используют utf-8charset. Также установите кодировку для соединения с этим запросом, чтобы убедиться, что вы получаете данные с правильной кодировкой.

set names utf8;
person Ander2    schedule 13.03.2013
comment
header('Content-Type: text/html; charset="UTF-8"'); (Убедитесь, что ваш сервер отправляет правильные заголовки) - person Xeoncross; 14.03.2013
comment
Я так не думаю, я настроил кодировку именно так, как вы предлагаете. И нет, базы данных в этой CMS нет. - person TeeJay; 14.03.2013
comment
@TeeJay Можете ли вы проверить кодировку веб-сервера по умолчанию? Возможно, ваши данные и заголовок в порядке, но веб-сервер будет вынужден использовать кодировку, отличную от вашей. - person Ander2; 14.03.2013
comment
Это мой виртуальный сервер с XAMPP. default_charset не имеет значения. У меня также есть Интернет на бесплатном хостинге, как вы можете видеть в моем профиле или непосредственно на моем сайте ссылка , но я не знаю, как узнать сервер по умолчанию. - person TeeJay; 14.03.2013
comment
Спасибо. Я так надеялся. Теперь мне придется поиграть с функциями, которые я скопировал в свой первый пост, я думаю. - person TeeJay; 14.03.2013

Tome, убедитесь, что ваш *.php или база данных или любые другие данные находятся в UTF-8, а ваша мета-кодировка в индексе также является utf-8.

http://www.jakpsatweb.cz/cestina.html — посетите этот сайт для получения информации о диакритических знаках в html. Вы увидите таблицу знаков в каждой кодировке.

Как сохранить русские символы в файл в кодировке UTF-8

person Stepo    schedule 13.03.2013
comment
Спасибо за подсказку, я знаю сеть. Однако моя проблема не в HTML, а где-то в PHP. HTML в порядке, так как текст в ‹body› и ‹p›‹/p› работает хорошо. Смотрите, как я отредактировал выше. - person TeeJay; 14.03.2013