1

私のスクリプトは大量のテキストを取得します-それはHTMLコードであるか、プレーンテキストであり、特殊文字がエンコードされているかどうか、またはその両方である可能性があります。

したがって、コンテンツには次のようなものが含まれる場合があります。

Don't Do That

It's called "Meme"

He said: 'Yeah'

エンコードされているかどうかにかかわらず、1つのタイプとして取得するにはどうすればよいですか?

私は試した:

htmlentities(html_entity_decode($text), ENT_QUOTES, "UTF-8"), ENT_NOQUOTES, "UTF-8")

ただし、すべての場合に機能するわけではありません。例:

戻り値

4

1 に答える 1

1

文字列を「ダブルデコード」しないのでhtml_entity_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で完全にデコードされたができたので、好きなようにエンコードしたり、直接使用したりできます。

もちろん、これは完璧な解決策ではありません。最初から文字列をエンコードする傾向がある場合があります。データソースを制御またはフィルタリングできない場合は、試してみる価値があります。

于 2012-08-28T16:11:45.557 に答える