Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改样式表的PHP XPath_Php_Xpath - Fatal编程技术网

更改样式表的PHP XPath

更改样式表的PHP XPath,php,xpath,Php,Xpath,我使用xpath更改标题中样式表的href的样式表 但它根本不起作用 $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 <

我使用xpath更改标题中样式表
href
的样式表

但它根本不起作用

$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;
$html=file\u get\u contents('http://stackoverflow.com');
$doc=新的DOMDocument();
$doc->loadHTML($html);
$xpath=新的DOMXPath($doc);
$css_links=$xpath->evaluate(“//link[@type='text/css']”);
对于($i=0;$i<$css\u链接->长度;$i++)
{
$csslink=$css\u链接->项目($i);
$oldurl=$csslink->getAttribute('href');
$newURL='1http://example.com/aaaa.css';
$csslink->removeAttribute('href');
$csslink->setAttribute('href',$newURL);
}
echo$html;

您正在使用
@$doc->loadHTML(html)
而不是
@$doc->loadHTML($html)
(注意
$
),否则它会工作

也可以使用
echo$doc->SaveHtml()
代替echo
$html

工作示例

您还可以将($i..的
替换为
foreach
,因为:


是否已启用从外部源获取内容?为什么要用@符号抑制错误消息?也许这就是你的答案。@mamuz,是的,根据phpinfo的说法,它是开着的
foreach ($css_links as $csslink) 
{
    $oldurl = $csslink->getAttribute('href');