我在php调用的模板文件中有一段文本 使用以下代码:
echo $playlist->description
该字段包含html链接,当该字段的结果显示为使用twitter api创建的tweetbox中的内容时,我想删除这些链接。
显示文字示例:
<a href="http://google.com">http://google.com</a> some text here.
我希望获得以下结果:
some text here
我已经研究过使用正则表达式preg_replace
和其他几个完成此操作。但是,我还没弄明白如何融入现有的字符串。
我尝试过以下操作但没有成功,
echo $playlist->description->$str = preg_replace('#(<a.*?>).*?(</a>)#', '$1$2', $str)
我是一个自称为php noob的人,我花了几周时间试图完成我的目标,所以非常感谢任何帮助。我觉得我真的很亲密!救命!!! :)
最诚挚的问候, 麦克
答案 0 :(得分:1)
您也可以在不使用正则表达式的情况下执行此操作!
$a = end(explode('</a>' , $playlist->description ));
这将为您提供</a>
答案 1 :(得分:0)
echo preg_replace('#.*?</a>\s*(.*)#', "$1", $playlist->description);
干杯
答案 2 :(得分:0)
我创建了一个删除HTML标记及其内容的函数:
功能:
<?php
function strip_tags_content($text, $tags = '', $invert = FALSE) {
preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags);
$tags = array_unique($tags[1]);
if(is_array($tags) AND count($tags) > 0) {
if($invert == FALSE) {
return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text);
}
else {
return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text);
}
}
elseif($invert == FALSE) {
return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text);
}
return $text;
}
?>
示例文字: 带有标签';
的$ text ='示例文字strip_tags($ text)的结果: 带标签的示例文本
strip_tags_content($ text)的结果: 带
的文字strip_tags_content($ text,'')的结果: 样本带
的文本strip_tags_content的结果($ text,'',TRUE); 带标签的文字
我希望有人有用:)