1

我在 php使用以下代码调用的模板文件中有一段文本 :

echo $playlist->description

该字段包含 html 链接,当该字段的结果显示为使用 twitter api 创建的推文框中的内容时,我想删除这些链接。

显示文本示例:

<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 菜鸟,我已经花了几个星期来尝试实现我的目标,所以非常感谢任何帮助。我觉得我真的很亲近!帮助!!!:)

最好的问候,迈克

4

3 回答 3

1

您也可以在不使用正则表达式的情况下执行此操作!

$a = end(explode('</a>' , $playlist->description ));

这将为您提供之后的一切</a>

于 2012-04-26T17:21:57.530 回答
0
echo preg_replace('#.*?</a>\s*(.*)#', "$1", $playlist->description);

干杯

于 2012-04-26T17:17:28.197 回答
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); 的结果 带有标签的文本

我希望有人有用:)

于 2015-04-11T17:15:54.733 回答