Я пытался использовать подход PHP DOM, а также библиотеку синтаксического анализатора SimpleHTMLDOM, пока у меня ничего не работает (проблема в том, что подход DOM возвращает только ссылки внутри элемента , а не в разделе страницы), поэтому я решил использовать регулярное выражение.
Вот неработающий код подхода PHP DOM:
Код: Выделить всё
function remove_css_links($string = "", $css_files = array()) {
$css_files = array("http://www.example.com/css/css.css?ver=2.70","style.css?ver=3.8.1");
$xml = new DOMDocument();
$xml->loadHTML($string);
$link_list = $xml->getElementsByTagName('link');
$link_list_length = $link_list->length;
//The cycle
for ($i = 0; $i < $link_list_length; $i++) {
$attributes = $link_list->item($i)->attributes;
$href = $attributes->getNamedItem('href');
if (in_array($href->value, $css_files)) {
//Remove the HTML node
}
}
$string = $xml->saveHTML();
return $string;
}
Код: Выделить всё
$html_text = '
...some content...
';
$url = preg_quote("http://www.example.com/css/css.css?ver=2.70");
$pattern = "~]+) href=".$url."/?>~";
$link = preg_replace($pattern, "", $html_text);
Однако я открыт для предложений, и если возможно заставить работать подход DOM вместо использования регулярных выражений - это нормально.
Подробнее здесь: https://stackoverflow.com/questions/219 ... gex-or-dom
Мобильная версия