2014-12-16 2 views
1
$content = preg_replace("~(<a href=\"(.*)\">\w+)~iU", '', $content); 
$ok = preg_replace("~(</a>)~iU", '', $content); 
echo $ok; 

мне нужно контролировать $ содержание ...как использовать preg_match_all, чтобы удалить <a> тег

Я хочу, чтобы удалить все ссылки в $ содержание ....

даже <a href="xx"><img xxxx> </a> все для удаления тега Просто сохранить <img xxx> ...

Как это сделать?

Мне нужно отредактировать REGEX ??

почему я просто не могу дель первый

+0

, что DOM? это класс? – Sky

+1

'$ content = preg_replace ('~ (. *?) ~ is', '$ 1', $ content);' –

ответ

3

Вы можете заменить анкеры с их содержимым с помощью DOMDocument:

$html = <<<'EOS' 
<a href="xx"><img src="http://example.com"> </a> 
<a href="xx"><img src="http://example.com"> </a> 
EOS; 

$doc = new DOMDocument; 
$doc->loadHTML($html); 
$xpath = new DOMXPath($doc); 

foreach ($xpath->query('//a') as $anchor) { 
    $fragment = $doc->createDocumentFragment(); 
    // collecting the child nodes 
    foreach ($anchor->childNodes as $node) { 
     $fragment->appendChild($node); 
    } 
    // replace anchor with all child nodes 
    $anchor->parentNode->replaceChild($fragment, $anchor); 
} 

echo $doc->saveHTML(); 
+0

Любопытно, кавычки в вашем heredoc '<<< 'EOS'' –

+0

Привычка, t желать попыток оценить переменные; на самом деле эта часть исходит из моего тестового шаблона SO :) –

+0

Если 4 ссылки. почему я это понимаю. Sky

Смежные вопросы