0

我有一个使用 PHP 编写的内容管理系统 GetSimple 的网站。我根据需要对其进行了编辑,但是,在标题中,这是应该存在的:

<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>

而不是“Tomáš Janeček - osobní web - Tom* áš * Janeček | 个人网站”。困扰我的是那些 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函数。

此外,问题仅存在于源代码中。最后显示没问题。

感谢您迄今为止的回复,我很高兴收到如此快速和有价值的回复。我非常感谢。

4

2 回答 2

1

我认为你有一个字符集问题。如果您希望特殊字符以正确的方式显示它们,请添加

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

到您的 html/php 文件。还要检查您的数据是否经过 UTF-8 编码。

如果您从 MySQL 数据库获取数据,请检查列是否使用utf-8字符集。还要设置与此查询的连接的字符集,以确保您获取具有正确编码的数据。

set names utf8;
于 2013-03-13T20:23:49.837 回答
0

Tome,请确保您的 *.php 或数据库或任何正在关闭的数据是 UTF-8 格式,并且索引上的元字符集也是 utf-8 格式。

http://www.jakpsatweb.cz/cestina.html - 请访问此网站以获取有关 html 变音符号的信息。您将看到每种编码中的符号表。

如何将俄语字符保存在 UTF-8 编码文件中

于 2013-03-13T20:22:58.353 回答