2

我已将我的网站从 interspire CMS 迁移到 Joomla!CMS。我已经设法迁移所有文章数据库,但其中一些有一个奇怪的问题 - 当我从 joomla 访问页面时,标题包含 HTML 实体,如’.

正如你可以从我使用的 CMS 中猜到的那样,我依赖 PHP 作为我的服务器端,而 MySql 作为我的数据库。

我试图用htmlspecialchars_decodeAND来检查数据库中文章的标题html_entity_decode以消除这些标题,但没有效果。

如果我只是从数据库中获取一个示例并对其进行响应,它看起来会很好:您的乐趣是什么,千层面或比萨曼彻斯特风格?

如果我转到 joomla 中的文章页面,它将如下所示: What’s Your Pleasure, Lasagna Or Pizza Manchester Style?

当我去 PhpMyAdmin 直接查看数据库中的内容时,这是标题的内容: What’s Your Pleasure, Lasagna Or Pizza Manchester Style?

我什至尝试使用以下方法删除符号:

str_replace("’","",$title);

或像这样替换它

str_replace('’',"'",$title);

但什么都没有。当我尝试再次对其进行编码而不是对其进行解码时(只是为了看看我是否在正确的数据库上)它工作并再次对其进行了编码......

拜托,我很高兴有任何新的想法......谢谢,Yanipan

4

3 回答 3

4

尝试将编码设置为 cp1252。这对我有用:

$decoded = html_entity_decode($your_string, ENT_QUOTES, 'cp1252');

于 2012-11-28T16:51:30.140 回答
1

可能您最好的选择是在数据库本身中进行搜索和替换,而不是尝试使用 php。在 mysql 中搜索和替换是这样完成的:

update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this string’, ‘replace found string with this string’);

所以你的应该看起来像:

update ARTICLES set TITLE = replace(TITLE, '’', '\'');

试一试。

于 2011-03-02T06:02:02.243 回答
0

需要更多信息


  1. 您的数据库上的字符编码是什么?那&or ;, 可能不是典型的 ASCII。
  2. PHP/Joomla 可能对您的字符串进行双重编码。查看浏览器的页面源并在生成的 HTML 中找到文本。而不是What’s,它可能只是以下之一:
    1. What&rsquo&59;s
    2. What&38;rsquo&59;s
    3. What&rsquo&#59;s
于 2011-06-15T16:54:20.877 回答