Php 如何从部分编码的文本中获取格式正确的内容

Php 如何从部分编码的文本中获取格式正确的内容,php,html,encoding,special-characters,html-entities,Php,Html,Encoding,Special Characters,Html Entities,我的脚本得到大量的文本——它可能是HTML代码,也可能只是纯文本,特殊字符可能是编码的,也可能不是编码的,或者两者兼而有之 因此,内容可能包含以下内容: Don't Do That It's called "Meme" He said: 'Yeah' 我该怎么做才能使它成为一个类型编码的还是非编码的 我试过: htmlentities(html_entity_decode($text), ENT_QUOTES, "UTF-8"), EN

我的脚本得到大量的文本——它可能是HTML代码,也可能只是纯文本,特殊字符可能是编码的,也可能不是编码的,或者两者兼而有之

因此,内容可能包含以下内容:

Don't Do That

It's called "Meme"

He said: 'Yeah'
我该怎么做才能使它成为一个类型编码的还是非编码的

我试过:

htmlentities(html_entity_decode($text), ENT_QUOTES, "UTF-8"), ENT_NOQUOTES, "UTF-8")
但它并不是在所有情况下都有效。例如:

返回


由于
html\u entity\u decode
不会对字符串进行“双重解码”,因此您可以使用如下方式:

$str=<<<STR
Don&#039;t Do That
It's called "Meme"
He said: &#039;Yeah&#039;
STR;

$tmp=html_entity_decode($str,ENT_QUOTES,"UTF-8");
while($str!=$tmp)
{
    $str=$tmp;
    $tmp=html_entity_decode($str,ENT_QUOTES,"UTF-8");
}

$str=由于
html\u entity\u decode
不会对字符串进行“双重解码”,因此您可以使用如下方式:

$str=<<<STR
Don&#039;t Do That
It's called "Meme"
He said: &#039;Yeah&#039;
STR;

$tmp=html_entity_decode($str,ENT_QUOTES,"UTF-8");
while($str!=$tmp)
{
    $str=$tmp;
    $tmp=html_entity_decode($str,ENT_QUOTES,"UTF-8");
}

$str=你确定吗?我尝试了您的代码(带正确的括号),它返回
&rsquo看起来文本的某些部分是双重编码的。这就是我得到这个结果的原因。主要问题是我得到的是•而不是他们的代码,你确定吗?我尝试了您的代码(带正确的括号),它返回
&rsquo看起来文本的某些部分是双重编码的。这就是我得到这个结果的原因。主要问题是我得到的是像•这样的东西,而不是他们的codesPerfect。这解决了一个问题。比如•,怎么样?我如何对它们进行编码?htmlentities似乎不起作用。它返回垃圾或•itself@GuryMax“•”是有效字符,不会被编码和解码。你说的“像•”是什么意思?我把格式化的文本保存到数据库中,然后显示在HTML网页上。有时,我可以看到垃圾,而不是•,,,“和其他许多东西。所以我想对它进行正确编码。@GuryMax这听起来像是一个字符编码问题,而不是xML实体编码问题。您确定所有进入数据库的数据都是UTF-8格式吗?
mb\u check\u encoding($txt,“UTF-8”)
返回true,我的MySQL数据库设置为UTF-8-general-ci,我在HTML网站上设置了charset=UTF-8。我还需要做什么吗?太好了。这解决了一个问题。比如•,怎么样?我如何对它们进行编码?htmlentities似乎不起作用。它返回垃圾或•itself@GuryMax“•”是有效字符,不会被编码和解码。你说的“像•”是什么意思?我把格式化的文本保存到数据库中,然后显示在HTML网页上。有时,我可以看到垃圾,而不是•,,,“和其他许多东西。所以我想对它进行正确编码。@GuryMax这听起来像是一个字符编码问题,而不是xML实体编码问题。您确定所有进入数据库的数据都是UTF-8格式吗?
mb\u check\u encoding($txt,“UTF-8”)
返回true,我的MySQL数据库设置为UTF-8-general-ci,我在HTML网站上设置了charset=UTF-8。我还需要做什么吗?