这是一个 hacky 解决方案,但是收集你如何处理这个而不用担心字符编码,你可能只是想让这该死的东西工作。
首先,我们将超链接转换为 hacky BBCode。然后,我们运行htmlentities()
它,最后我们用旧的 HTML 替换 hacky A
BBCode。看看这个:
$foo = 'Opening quietly in Chicagos West Loop, the Inspire Business Center is looking to take a more active role in Chicagos startup scene … Continue reading <span class="meta-nav">→</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/上测试并按预期工作。