0

この質問は次の続きです: ワードプレスからデータをプルする際のガベージ値

次のコードを使用して、ガベージ値を処理しました。

 htmlentities($entry->title, ENT_QUOTES | ENT_IGNORE, 'UTF-8')

上記のコードの問題は、データに URL がある場合、その URL を表示する代わりに、次のように URL を分割することです。

&#8230; <a href="http://abc.com/blog/">Continue reading <span class="meta-nav">&#8594;</span></a>

URLがある場合に無視する方法を教えてください。

4

2 に答える 2

1

これはハックな解決策ですが、文字エンコーディングを気にせずにこれにどのようにアプローチしているかを収集すると、おそらく、いまいましいことを機能させたいだけです.

まず、ハイパーリンクをハッキーな BBCode に変換します。次に、それを実行htmlentities()し、最後にハッキーAな BBCode を古き良き HTML に置き換えます。これを見てください:

$foo = 'Opening quietly in Chicagos West Loop, the Inspire Business Center is looking to take a more active role in Chicagos startup scene &#8230; Continue reading <span class="meta-nav">&#8594;</span>';
echo smartencode($foo);

function smartencode($str) {
     $tags = 'a|span';
     // Convert Anchor Tags to hacky-BBCode
     $ret = preg_replace('/\<(\/?('.$tags.').*)\>/U', '[$1]', $str);

     // Remove so-called Garbage
     $ret = preg_replace('/[^(\x20-\x7F)]*/','', $ret);
     // $ret = htmlentities($ret, ENT_QUOTES | ENT_IGNORE, 'UTF-8');

     // Reinstate Anchor tags in HTML
     $ret = preg_replace('/\[(\/?('.$tags.').*)\]/U', '<$1>', $ret);
     return $ret;
}

繰り返しますが、エレガントではありません。実際、よく見ると、いくつかの落とし穴が見つかる可能性がありますが、ユースケースではうまくいくと思います。

http://writecodeonline.com/php/でテストされ、期待どおりに動作しました。

于 2013-02-15T08:11:35.747 に答える
0

URLの問題は、特殊文字データを修正するhtmlspecialchars_decode()関数を使用して修正されています。

また、次のコード行で、URLとともにガベージ値の問題も修正されました。

$ret = $feed;     
echo htmlspecialchars_decode(htmlentities($ret, ENT_QUOTES | ENT_IGNORE, 'UTF-8')); 
于 2013-03-10T08:15:47.953 に答える