0

这个问题是以下问题的延续: 从 wordpress 中提取数据时出现的垃圾值

我使用以下代码处理了垃圾值:

 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>

如果有网址,请告诉我如何忽略。

4

2 回答 2

1

这是一个 hacky 解决方案,但是收集你如何处理这个而不用担心字符编码,你可能只是想让这该死的东西工作。

首先,我们将超链接转换为 hacky BBCode。然后,我们运行htmlentities()它,最后我们用旧的 HTML 替换 hacky ABBCode。看看这个:

$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

使用修复特殊字符数据的 htmlspecialchars_decode() 函数正在修复 URL 问题。

以下代码行也与 URL 一起修复了垃圾值问题:

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