Strip links from the_content

时间:2016-02-01 作者:The Sumo

我正在尝试从the_content(); 当显示在前端时。如果我使用get_the_content();preg_replace 它工作正常,但是,get\\u内容不显示格式,例如<p> 等与一起使用时the_content();, 它不会去掉链接。

这将删除链接,但不显示格式,如<p>:

$the_content = get_the_content();
$bad_tags = array(\'/<a title=\\"(.*?)\\" href=\\"(.*?)\\">/\', \'/<\\/a>/\');
$strip_tags = preg_replace($bad_tags, "", $the_content);
echo $strip_tags;
这不会删除链接,但会显示格式:

$the_content = the_content();
$bad_tags = array(\'/<a title=\\"(.*?)\\" href=\\"(.*?)\\">/\', \'/<\\/a>/\');
$strip_tags = preg_replace($bad_tags, "", $the_content);
echo $strip_tags;

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

使用get_the_content(). 你只需要巧妙地使用它。默认情况下,get_the_content() 返回未格式化的原始post_content 来自post对象的字段。为了获得格式化文本,您需要从get_the_content() 尽管the_content 过滤器。这就是the_content() 默认情况下为。

您可以将代码调整为以下内容

$the_content = get_the_content();
$bad_tags    = [\'/<a title=\\"(.*?)\\" href=\\"(.*?)\\">/\', \'/<\\/a>/\'];
$strip_tags  = preg_replace( $bad_tags, "" , $the_content );
echo apply_filters( \'the_content\', $strip_tags );
编辑评论,您应该至少升级到PHP 5.6。短数组语法仅适用于PHP 5.4,因此这意味着您有一个恐龙版本的PHP。这对您的网站来说是一个巨大的安全风险,因为PHP 5.5以下的所有版本都是not 不再支持。请注意,PHP 5.5将于7月份到达EOL,所有更新(接受安全更新)都已停止

PHP 5.4之前版本

$the_content = get_the_content();
$bad_tags    = array( \'/<a title=\\"(.*?)\\" href=\\"(.*?)\\">/\', \'/<\\/a>/\' );
$strip_tags  = preg_replace( $bad_tags, "" , $the_content );
echo apply_filters( \'the_content\', $strip_tags );

相关推荐