2011-04-15 6 views
0

をマークとして引用符が返さ:単語の周りhttp://mashable.com/2011/04/14/google-computers-regret/メタ記述のエンコード - 私はこのサイトのメタdescriptionタグからの引用符を取得する場合の質問はPHP

引用符が疑問符として返す「後悔します」。

私は$ strのに対し、メタデータが返され、次のコードを使用しています:

if(mb_detect_encoding($str, 'UTF-8, ISO-8859-1', true) != 'ISO-8859-1') $str = utf8_decode($str); 
$str = strtr($str, get_html_translation_table(HTML_ENTITIES)); 
$str = strip_tags(html_entity_decode(htmlspecialchars_decode($str, ENT_NOQUOTES), ENT_NOQUOTES, "UTF-8")); 
$str = html_entity_decode($str, ENT_QUOTES,"UTF-8"); 

どのように私はこの問題を解決することができますか?

+0

あなたは何を達成しようとしていますか? – Gumbo

答えて

0

それは原始的な修正だ、と私はそれを行うためのより良い方法があると確信しているが、単純な引用符でこれらの定型化された引用符を置き換えると疑問符の問題を防ぐ必要があります

$str = str_replace(array("“" , "”") , '"' , $str); 

(この不格好なものよりも良く、よりインテリジェントな、ソリューションを学ぶことが幸せ。)

以下のコメントをもとに改訂:

$str = str_replace(array("\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99") , '"' , $str); 

あなたがして(配列で開催された)複数のパターンを置き換えることができますこの関数を使った同じ置換文字列は、同じ内容の配列をパディングするよりも優れています。また、不要なときには不器用な関数を作成するよりも優れています。

+0

PHPはこれらの "スタイル付き"引用符を私のための通常の引用符として解釈し、置換えを行わない – John

+0

これらの引用符は "中括弧"と呼ばれ、マイクロソフトによってもちろん存在することがわかりました...ここでは、それらは次のとおりです: 'function fixcurly($ string){$ search = array(" \ xe2 \ x80 \ x9c "、" \ xe2 \ x80 \ x9d "、" \ xe2 \ x80 \ x98 " ); $ replace = array( '"' '' ''、" '"、"' "); 戻り値str_replace($ search、$ replace、$ string); } ' – John

0

結果のHTMLをUTF-8として出力します。

関連する問題