在PHP中将ASCII转换为明文

10

我正在爬取一些网站,拿到了ASCII文本,我想将其转换为纯文本以便存储到数据库中。例如,我想要

I have got to tell anyone who will listen that this is
one of THE best adventure movies I've ever seen.
It's almost impossible to convey how pumped I am
now that I've seen it.

转换为

I have got to tell anyone who will listen that this is
one of THE best adventure movies I've ever seen. It's
almost impossible to convey how pumped I am now that
I've seen it.

我已经谷歌了很多遍,还是无法解决问题,有人能帮忙吗?


感谢您的帮助,非常有效! - e_r
可能是通过PHP解码数字HTML实体的重复问题,并且还可以在右侧查看相关问题。 - hakre
1个回答

28
您可以使用html_entity_decode函数:
echo html_entity_decode('...', ENT_QUOTES, 'UTF-8');

几个注意事项:

  • 请注意,看起来您实际上想要将HTML编码的字符串(其中包含实体如)转换为ASCII文本。

  • 此示例将转换为UTF-8,这是适用于所有ASCII字符(即字符代码低于128的字符)的ASCII兼容字符编码。如果您真的想要纯ASCII(因此丢失所有带重音的字符和外语中的字符),则应单独删除所有有问题的字符。

  • 最后一个参数(“UTF-8”)是必需的,以保持与不同PHP版本的兼容性,因为自PHP 5.4.0以来默认值已更改。

更新:ideone上有你的文本示例

更新2:根据@Daan的建议,将ENT_COMPAT更改为ENT_QUOTES。


感谢您的回复。我实际上尝试使用了html_entity_decode,但我的输出仍然具有引号的ASCII等价物,例如'。这是HTML编码吗?实际上我确实希望从HTML编码的字符串转换为ASCII纯文本,因为我正在对结果进行一些情感分析。 - e_r
提供的示例对我有效,您确定将正确的参数传递给 html_entity_decode 吗? - Daan
@Daan 是的,它在浏览器中可以运行,但是当我在CLI中运行相同的代码时问题仍然存在。 - e_r
啊,当然。你应该使用ENT_QUOTES而不是ENT_COMPAT。不确定为什么这在ideone中可以正常工作。 - Daan
搞定了!给出一个答案,我会标记它。感谢你的帮助。 - e_r
不用谢!请随意接受这个答案;我只是花了几秒钟查看代码,想知道为什么@ash108的代码无法工作,然后我意识到是单引号,被ENT_COMPAT排除了。@ash108做了所有的艰苦工作,包括提供一个示例 :) - Daan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接