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