2013-09-21 4 views
0

xpath를 사용하여 헤더의 스타일 시트 <link>href 인 스타일 시트를 변경합니다.PHP 스타일 시트를 변경하는 XPath

하지만 전혀 작동하지 않습니다.

$html=file_get_contents('http://stackoverflow.com'); 
$doc = new DOMDocument(); 
$doc->loadHTML($html); 
$xpath = new DOMXPath($doc); 
$css_links = $xpath->evaluate("//link[@type='text/css']"); 
for ($i = 0; $i < $css_links->length; $i++) 
{ 
    $csslink = $css_links->item($i); 
    $oldurl = $csslink->getAttribute('href'); 
    $newURL='http://example.com/aaaa.css'; 
    $csslink->removeAttribute('href'); 
    $csslink->setAttribute('href', $newURL); 
} 
echo $html; 
+0

가 [fopen을 래퍼]가 :

또한 foreachDOMNodeList implements Traversable 때문으로 for($i...)을 대체 할 수 url-fopen) 외부 소스에서 콘텐츠를 가져올 수 있습니까? 왜 @ -notation을 사용하여 오류 메시지를 표시하지 않습니까? 어쩌면 당신의 대답이있을 것입니다. – Mamuz

+0

@ mamuz, 네, phpinfo에 따르면 – werva

답변

1

당신은 그렇지 않으면 작동, 대신 @$doc->loadHTML($html);@$doc->loadHTML(html);을합니다 ($주의) 사용하고 있습니다.

$html 대신에 echo $doc->SaveHtml()을 사용하십시오.

작업 예 here. http://www.php.net/manual/en/filesystem.configuration.php#ini.allow- (

foreach ($css_links as $csslink) 
{ 
    $oldurl = $csslink->getAttribute('href'); 
+0

고맙습니다. 여전히'echo $ css_links-> length;는 0을 보여줍니다. – werva

관련 문제