帮助删除数据库中的 HTML 特殊字符
我已将我的网站从 interspire CMS 迁移到 Joomla!内容管理系统。 我已经成功迁移了所有文章数据库,但其中一些有一个奇怪的问题 - 当我从 joomla 访问页面时,标题包含像 ’
这样的 HTML 实体。
正如您可以从我使用的 CMS 中猜到的那样,我依赖 PHP 作为服务器端,并使用 MySql 作为数据库。
我尝试使用 htmlspecialchars_decode
和 html_entity_decode
检查数据库中文章的标题,以摆脱这些标题,但没有效果。
如果我只是从数据库中获取一个示例并回显它,它看起来不错: 您喜欢哪一种,烤宽面条还是曼彻斯特风格的披萨?
如果我进入 joomla 中的文章页面,它将如下所示: 您喜欢什么,烤宽面条还是曼彻斯特风格的披萨?
当我去PhpMyAdmin直接查看数据库中的内容时,这是标题的内容: 您喜欢什么,烤宽面条还是曼彻斯特风格的披萨?
我什至尝试用以下内容删除该符号:
str_replace("’","",$title);
或像这样替换它,
str_replace('’',"'",$title);
但什么也没有。 当我尝试再次编码而不是解码它(只是为了看看我是否在正确的数据库上)时,它工作并再次编码......
拜托,我很高兴有任何新想法...... 谢谢, 亚尼潘
I've migrated my site from interspire CMS to Joomla! CMS.
I've managed to migrate all the database of articles, but some of them have a weird issue - when I access the page from joomla, the title contains HTML entities like ’
.
As you can guess from the CMS's I use, I rely on PHP as my server side, and MySql for my database.
I tried to go over the titles of the articles in the database with htmlspecialchars_decode
AND html_entity_decode
in order to get rid of those, but it had no effect.
if I just grab an example from the DB and echo it, it will look OK:
What’s Your Pleasure, Lasagna Or Pizza Manchester Style?
if I go to the article page in joomla it will look like this:What’s Your Pleasure, Lasagna Or Pizza Manchester Style?
When I go to PhpMyAdmin to see directly what is in the database, this is the contents of the title:What’s Your Pleasure, Lasagna Or Pizza Manchester Style?
I even tried to remove the symbol with:
str_replace("’","",$title);
or replace it like this
str_replace('’',"'",$title);
but nothing.
When I tried to encode it again instead of decoding it (just to see if i'm on the right DB) it worked and encoded it again...
Please, I would be glad to have any new ideas...
Thanks,
Yanipan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试将编码设置为 cp1252。这对我来说很有效:
$decoded = html_entity_decode($your_string, ENT_QUOTES, 'cp1252');
Try setting encoding to cp1252. This worked out for me:
$decoded = html_entity_decode($your_string, ENT_QUOTES, 'cp1252');
也许你最好的选择是在数据库本身中进行搜索和替换,而不是尝试使用 php 进行搜索和替换。 mysql 中的搜索和替换是这样完成的:
所以你的应该看起来像这样:
尝试一下。
Probably your best bet is to do search and replace within the database itself vs trying to do it with php. Search and replace in mysql is done like this:
So yours should look something like:
Give that a shot.
需要更多信息
&
或;
可能不是典型的 ASCII。What’s
:什么&rsquo&59;s
什么&38;rsquo&59;s
什么
Need more info
&
or;
, may be something other than the typical ASCII.What’s
, it might just be one of the following:What&rsquo&59;s
What&38;rsquo&59;s
What’s