【发布时间】:2016-10-10 17:59:45
【问题描述】:
我正在寻找最好的方法,而不是 JavaScript,在 PHP 中,从 <a> 元素中去除所有其他文本或标记,<spans> 除外。父 <a> 元素不提供要定位的类名或 id。例如:
我有这个 PHP:
<?php if ( has_nav_menu( 'social-menu' ) ) { ?>
<?php wp_nav_menu( array( 'theme_location' => 'social-menu', 'fallback_cb' => '' ) );?>
<?php}?>
生成这个 html:
<div>
<ul>
<li><a><span>icontext</span> some more text to hide1!</a></li>
<li><a><span>icontext</span> some more text to hide1!</a></li>
<li><a><span>icontext</span> some more text to hide1!</a></li>
</ul>
</div>
我希望最终结果是:
<div>
<ul>
<li><a><span>icontext</span></a></li>
<li><a><span>icontext</span></a></li>
<li><a><span>icontext</span></a></li>
</ul>
</div>
我理解逻辑将类似于以下使用正确的剥离语法:
if this = '<span>icontext</span>somemoretexttohide1!'
else if this = '<span>icontext</span> some more text to hide1!'
should just = '<span>icontext</span>'
【问题讨论】:
-
你试过 strip_tags()
-
我了解它的作用并且一直在 PHP.net 中阅读。
strip_tags("Hello <b><i>world!</i></b>","<b>")我知道这会留下<b>标签但删除<i>。但是我不明白如何检查以找到<a>,然后留下<spans>和它的文本,但删除span之外的所有其他内部文本和字符。特别是因为我没有剥离标签。只是父标签的内容,但不是太多,以至于它也剥离了跨度的内容。然后如何将所有这些逻辑添加到 Wordpress 数组中。