首頁 > 後端開發 > php教程 > php字符截取与过滤

php字符截取与过滤

WBOY
發布: 2016-06-06 20:50:54
原創
1116 人瀏覽過

1月19日,装扮成《白蛇传》中“白娘子”(中)的演员在南京玄奘寺“腊八节品腊八粥”活动上为市民盛粥。

[caption id="attachment_45" align="aligncenter" width="432"]<a href="http://cqtlmx.com/wp-content/uploads/2013/01/baili.jpg"><img class=" wp-image-45  " alt="“白娘子”布施腊八粥(组图)" src="http://cqtlmx.com/wp-content/uploads/2013/01/baili.jpg"    style="max-width:90%"  style="max-width:90%"></a> “白娘子”布施腊八粥(组图)[/caption]

当日是中国传统的腊八节,南京玄奘寺熬制了咸、甜两种口味的上万份腊八粥,众多市民前来品粥祈福。 新华社记者孙参摄
登入後複製
登入後複製

以上代码截取掉HTML标签,图片啊、[caption 啊等。

目前我用的是

<?php echo mb_strimwidth(strip_tags(get_the_content()), 0, 120,"...");?>
登入後複製
登入後複製

问题:貌似HTML标签没有被过滤掉

回复内容:

1月19日,装扮成《白蛇传》中“白娘子”(中)的演员在南京玄奘寺“腊八节品腊八粥”活动上为市民盛粥。

[caption id="attachment_45" align="aligncenter" width="432"]<a href="http://cqtlmx.com/wp-content/uploads/2013/01/baili.jpg"><img class=" wp-image-45  " alt="“白娘子”布施腊八粥(组图)" src="http://cqtlmx.com/wp-content/uploads/2013/01/baili.jpg"    style="max-width:90%"  style="max-width:90%"></a> “白娘子”布施腊八粥(组图)[/caption]

当日是中国传统的腊八节,南京玄奘寺熬制了咸、甜两种口味的上万份腊八粥,众多市民前来品粥祈福。 新华社记者孙参摄
登入後複製
登入後複製

以上代码截取掉HTML标签,图片啊、[caption 啊等。

目前我用的是

<?php echo mb_strimwidth(strip_tags(get_the_content()), 0, 120,"...");?>
登入後複製
登入後複製

问题:貌似HTML标签没有被过滤掉

我觉得这样的替换比较完美,而且兼容其它标签

$content = '1月19日,装扮成《白蛇传》中“白娘子”(中)的演员在南京玄奘寺“腊八节品腊八粥”活动上为市民盛粥。

[caption id="attachment_45" align="aligncenter" width="432"]<a href="http://cqtlmx.com/wp-content/uploads/2013/01/baili.jpg"><img class=" wp-image-45  " alt="“白娘子”布施腊八粥(组图)" src="http://cqtlmx.com/wp-content/uploads/2013/01/baili.jpg"    style="max-width:90%"  style="max-width:90%"></a> “白娘子”布施腊八粥(组图)[/caption]

当日是中国传统的腊八节,南京玄奘寺熬制了咸、甜两种口味的上万份腊八粥,众多市民前来品粥祈福。 新华社记者孙参摄';

preg_replace(array("/]+>/s", "/\[[^\]]+\]/s"), '', $content);
登入後複製

话说[caption]只算是BBcode不算是HTML标签吧,所以你用strip_tags是木有效果的,所以你可以考虑先把BBcode转换为HTML标签再用strip_tags就应该正常了吧。

如果格式都是这么统一的话,可以考虑用下面的代码:

    $s = array('[caption', ']<a array></a><a>');
    str_replace($s, $r, get_the_content());</a>
登入後複製

效率什么的我是不太清楚了,就当为你提供另外一种思路吧~

$pat[0]='/(\[caption)([\s|\S]+)\/>/';
$pat[1]='/\[\/caption\]/';
$str='[caption id="attachment_45" align="aligncenter" width="432"]<a href="http://cqtlmx.com/wp-content/uploads/2013/01/baili.jpg"><img class=" wp-image-45  " alt="“白娘子”布施腊八粥(组图)" src="http://cqtlmx.com/wp-content/uploads/2013/01/baili.jpg"    style="max-width:90%"  style="max-width:90%"></a> “白娘子”布施腊八粥(组图)[/caption]';
echo preg_replace($pat,'',$str);
登入後複製

不知道lz的期望输出结果是什么.
如果是想删除整个shortcode [caption][/caption]
用wp内置的函数remove_shortcode或者remove_all_shortcodes
如果是想保留

"白娘子"布施腊八粥(组图)
登入後複製

也很简单.

$content = wp_strip_all_tags(str_replace(array('[',']'),array(''),$content));
登入後複製
相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板