我已将我的网站从interspire CMS迁移到Joomla! CMS。
我已设法迁移所有文章数据库,但其中一些有一个奇怪的问题 - 当我从joomla访问页面时,标题包含像’
这样的HTML实体。
正如您从我使用的CMS中猜到的那样,我依赖PHP作为我的服务器端,而MySql则依赖于我的数据库。
我尝试使用htmlspecialchars_decode
AND 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
答案 0 :(得分:4)
尝试将编码设置为cp1252。这对我有用:
$decoded = html_entity_decode($your_string, ENT_QUOTES, 'cp1252');
答案 1 :(得分: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, '’', '\'');
试一试。
答案 2 :(得分:0)
&
或;
可能不是典型的ASCII。What’s
,它可能只是以下之一:
What&rsquo&59;s
What&38;rsquo&59;s
What’s