我有什么
$string = "bla bla bla bla bla <a href='http://youtube.com/watch?=XXXXX'>my video</a> ble ble ble ble <a href='http://google.com'>google</a>";
我想得到什么
$string = "bla bla bla bla bla ble ble ble ble <a href='http://google.com'>google</a>";
我只想删除YouTube超链接
这应该可以解决问题,删除所有带有 youtube somwhere 一词的 A 标签。
$string = "bla bla bla bla bla <a href='http://youtube.com/watch?=XXXXX'>my video</a> ble ble ble ble <a href='http://google.com'>google</a>";
echo preg_replace("#(<a.*youtube.*a>)#U","",$string);
如果需要,您可以进一步扩展它以检查 youtube.com/或更精确的内容。
此模式适用于您发布的示例,如果您需要更具体,请告诉我。
$re = "/^(.*?)<a .*youtube.*>.*<''/a>(.*?)$/Ui";
$str = "bla bla bla bla bla <a href='http://youtube.com/watch?=XXXXX'>my video</a> ble ble ble ble <a href='http://google.com'>google</a>";
preg_match($re, $str, $matches);
$string = isset($matches[2]) ? $matches[1] . $matches[2] : ""; // Return a blank string for no match
请尝试以下解决方案:
<?php
$dom = new DOMDocument;
$string = "bla bla bla bla bla <a href='http://youtube.com/watch?=XXXXX'>my video</a> ble ble ble ble <a href='http://google.com'>google</a>";
$dom->loadHTML($string);
print_r("<pre>");
print_r($string);
print_r("</pre>");
print_r("<br />");
$elements = $dom->getElementsByTagName('a');
for ($i = $elements->length; --$i >= 0; ) {
$href = $elements->item($i);
if(strpos($href->getAttribute('href'), "youtube")) {
$href->parentNode->removeChild($href);
}
}
$html = $dom->saveHTML();
print_r("<pre>");
print_r($html);
print_r("</pre>");
die;
输出:
呸��
呸��