найти и отредактировать элемент комментария html с помощью php

Мне нужно отредактировать внутреннюю часть следующего тега комментария, чтобы я мог изменить местоположение файла 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'; } 

Solutions Collecting From Web of "найти и отредактировать элемент комментария html с помощью php"

Попробуйте "//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]> не является частью фактического тега. Это символьные данные.