0

首先,我获取网页的 html,然后删除通常出现在页面左侧或右侧(不在页面正文中)的 href 链接。Href 链接被删除,但它们的标签没有被删除。

例子:

<a href='http://test.blogspot.com/2012/11/myblog.html'>London</a>

链接正在被删除,但不是它的标签,即“伦敦”。如何删除 html 源代码中的完整行?我正在使用以下代码:

$string = strip_tags($html_source_code, '<a>', TRUE); 

function strip_tags($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; 
}
4

2 回答 2

0
$link = "<a href='http://test.blogspot.com/2012/11/myblog.html'>London</a>";

function erraser($theLink, $checkTag){

    if(strpos($theLink, $checkTag) == true){

        for($i=0; $i< strlen($theLink); $i++){
        $link[$i] = '';
        return  $link[$i];
        }
       }else{
        return $theLink;
    }

}

现在,让我们看看这个:

你所要做的就是给erraser()函数两个参数,然后是链接的变量,以及任何用来识别链接的文本

如果你这样做:echo erraser($link, 'href');它会删除链接,return什么都没有。但是,如果你把它----放在里面echo erraser($link, '----'); ,就会给出链接london,意思是,它会检查它是否是一个链接并执行所需的功能

于 2013-05-18T22:35:28.887 回答
0

如果我使用您的代码,我会收到一个致命错误:无法重新声明 strip_tags()。

将 name 函数更改为类似 my_strip_tags 的效果很好。

function my_strip_tags($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; 
}

$html_source_code = "Beginning of content ... <a href='http://test.blogspot.com/2012/11/myblog.html'>London</a> ... end of content.";

echo "<p>".$html_source_code."</p>";

$string = my_strip_tags($html_source_code, '<a>', TRUE);

echo "<p>".$string."</p>"; 

打印:

内容的开始......伦敦......内容的结束。

内容的开始……内容的结束。

于 2013-05-18T22:35:53.593 回答