Мне нужно отредактировать внутреннюю часть следующего тега комментария, чтобы я мог изменить местоположение файла css. Это нужно сделать через PHP. Я попытался использовать следующий код, но получаю недопустимые ошибки выражения.
Раздел комментариев:
<!--[if IE 6]><link rel="stylesheet" type="text/css" href="/Css/IE6.css" media="screen" /><![endif]-->
Код, который не работает:
$csslist = $xpath->query("//<!--[if IE 6]>"); foreach($csslist as $css) { $css->innertext = 'test'; }
Попробуйте "//comment()"
чтобы получить все CommentNodes.
Обратите внимание, что элемент link в CommentNode не является дочернимNode комментарияNode, а просто данными:
libxml_use_internal_errors(TRUE); $dom = new DOMDocument; $dom->loadHTMLFile( 'http://www.nytimes.com/' ); libxml_clear_errors(); $xpath = new DOMXPath($dom); foreach( $xpath->query('//comment()[contains(., "link")]') as $node) { var_dump( $node->data ); }
Это даст:
string(135) "[if IE]> <link rel="stylesheet" type="text/css" href="http://graphics8.nytimes.com/css/0.1/screen/build/homepage/ie.css"> <![endif]" string(138) "[if IE 6]> <link rel="stylesheet" type="text/css" href="http://graphics8.nytimes.com/css/0.1/screen/build/homepage/ie6.css"> <![endif]"
Как вы можете видеть, фактический узел комментариев – это только части <!--
и -->
. Остальная часть – это просто текст. [if IE]>
не является частью фактического тега. Это символьные данные.