我遇到了WordPress模板的轻微编码问题.这是我在模板中使用的代码:
<?php echo teaser(40); ?>
Run Code Online (Sandbox Code Playgroud)
在我的函数中,我使用它来剥离标记并仅从允许的标记中获取内容.
<?php
function teaser($limit) {
$content = explode(' ', get_the_content(), $limit);
if (count($content)>=$limit) {
array_pop($content);
$content = implode(" ",$content).'...';
} else {
$content = implode(" ",$content);
}
$content = preg_replace('/\[.+\]/','', $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
$content = strip_tags($content, '<p><a><ul><li><i><em><strong>');
return $content;
}
?>
Run Code Online (Sandbox Code Playgroud)
问题:我使用上面的代码从内容中删除标签,但WordPress已经将图像标签放在段落中.因此,结果是空段落标记,其中图像被剥离.
只是为了清理我的代码和无用的空标签.我的问题是如何删除空段落标签?
<p></p>
Run Code Online (Sandbox Code Playgroud)
非常感谢提前!:)
Pra*_*pta 46
使用此正则表达式删除空段
/<p[^>]*><\\/p[^>]*>/
Run Code Online (Sandbox Code Playgroud)
例
<?php
$html = "abc<p></p><p>dd</p><b>non-empty</b>";
$pattern = "/<p[^>]*><\\/p[^>]*>/";
//$pattern = "/<[^\/>]*>([\s]?)*<\/[^>]*>/"; use this pattern to remove any empty tag
echo preg_replace($pattern, '', $html);
// output
//abc<p>dd</p><b>non-empty</b>
?>
Run Code Online (Sandbox Code Playgroud)
bla*_*9ue 30
这将删除所有空p标记,即使它们包含spaces或&nbps;内部.
$str = "<p> </p><p> </p><p> </p><p>Sample Text</p>";
echo preg_replace("/<p[^>]*>[\s| ]*<\/p>/", '', $str);
Run Code Online (Sandbox Code Playgroud)
这只是回音 <p>Sample Text</p>
此函数先删除空元素,然后再删除从先前删除的元素创建的其他空元素。(示例字符串包含空格,制表符和回车符。)
function teaser( $html ) {
$html = str_replace( ' ', ' ', $html );
do {
$tmp = $html;
$html = preg_replace(
'#<([^ >]+)[^>]*>[[:space:]]*</\1>#', '', $html );
} while ( $html !== $tmp );
return $html;
}
Run Code Online (Sandbox Code Playgroud)
有以下示例:
<?php
$html = '
<p>Hello!
<div class="foo">
<p id="nobody">
<span src="ok"> </span>
</p>
</div>
</p>
';
echo teaser( $html );
?>
Run Code Online (Sandbox Code Playgroud)
该函数返回:
<p>Hello!
</p>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49867 次 |
| 最近记录: |