php удалить ссылки и контент - PullRequest
1 голос
/ 17 августа 2011

Привет всем, у меня есть маленький вопрос php:

У меня много таких строк:

$content = "Hi I am a <a href='http://blabla' ...>black</a> cat";

Как я могу преобразовать эту строку в:

$content = "Hi I am a cat";

Я пробовал это, но не работает ...

$content = preg_replace("/<a href=.*?>(.*?)<\/a>/","$1",$content);

Ответы [ 2 ]

8 голосов
/ 17 августа 2011

Это выглядит примерно так.

Я только что попробовал это, и это, кажется, работало отлично:

$content = preg_replace("/<a href=.*?>(.*?)<\/a>/","",$content);
1 голос
/ 17 августа 2011

Не использовать REGEX !!!! Использовать strip_tags.

echo strip_tags( "Hi I am a <a href='http://blabla' ...> black</a> cat" );
// Hi I am a  black cat 
// (there will be a double space there because a space comes before and after
// the opening for the <a> tag. You can use str_replace('  ', ' ', $val) to get
// rid of all double spaces/

Если вы просто пытаетесь избавиться от «черного», вы можете попробовать DomDocument:

$doc = new DomDocument();
$doc->loadXML( "<root>" . // you'll need a root.
       "Hi I am a <a href='http://blabla' ...> black</a> cat".
"</root>");
$nodes = array();
foreach( $doc->getElementsByTagName('a') as $item )
{
   $nodes[]=$item;
}
foreach( $nodes as $node )
{
   if( $node->parentNode ) $node->parentNode->removeChild($node);
}
echo $doc->documentElement->nodeValue;
...