【问题标题】:phpQuery behaving weird, changing HTMLphpQuery 行为怪异,改变 HTML
【发布时间】:2011-09-24 01:00:48
【问题描述】:
我想通过 phpQuery 处理一个带有 Google plusone 按钮的模板,我遇到了以下问题:
require_once( "phpQuery.php" );
$p = phpQuery( "<g:plusone></g:plusone>" );
echo $p->html();
预期的输出是:
<g:plusone></g:plusone>
但它的输出却是:
<plusone></plusone>
这与 google 的预期不符,因此该按钮不再起作用。如何阻止 phpQuery 更改(修复?)我的代码,或者如何在处理完成后不将字符串从 plusone 更改为 g:plusone 的情况下解决此问题? (这是一个令人讨厌的解决方法,另外,我在 phpQuery 中遇到了更多这些“翻译”问题。
【问题讨论】:
标签:
google-plus-one
phpquery
【解决方案1】:
我在添加 google+ 徽章时遇到了同样的问题。我可以强制谷歌的代码生成器使用 div 容器生成代码。我只需要勾选“html5 有效代码”复选框。
【解决方案2】:
我一直在寻找解决这个问题的方法,但无济于事。我发现了一个可怕的解决方法。我确信这不是最优雅的方法,但至少它解决了问题。
代替标签:
<g:plusone>...</g:plusone>
使用:
<g__0058__plusone>...</g__0058__plusone>
然后在输出之前简单地 str_replace 结果:
echo str_replace("__0058__",":",$doc->html());
基本上,在您通常会放置冒号 (:) 的标记中,您会使用 0058 代替。请不要投反对票,这是一个非常不优雅的解决方案,我意识到这一点,但至少它是解决这个老问题的方法。