从生成的内容中删除链接标记和内部html

时间:2012-04-26 17:08:17

标签: php

我在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的人,我花了几周时间试图完成我的目标,所以非常感谢任何帮助。我觉得我真的很亲密!救命!!! :)

最诚挚的问候, 麦克

3 个答案:

答案 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); 带标签的文字

我希望有人有用:)