返回远程页面样式表的PHP cURL

返回远程页面样式表的PHP cURL,php,string,curl,Php,String,Curl,我使用以下代码使用PHP cURL获取远程内容 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://example.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); echo $output; 这段代码返回全部内容,但我只想以以下格式打印所有样式表 <link rel="styleshee

我使用以下代码使用PHP cURL获取远程内容

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
这段代码返回全部内容,但我只想以以下格式打印所有样式表

<link rel="stylesheet" href="http://www.example.com/css/style1.css">
<link rel="stylesheet" href="http://www.example.com/css/style2.css">


如何使用str.replace()过滤内容仅使用cURL获取Stylsheet?

更好的方法是解析HTML树并检索所需的节点(在您的案例中为
),并对其进行适当过滤。

更好的方法是解析HTML树并检索所需的节点(在您的案例中为
),并对其进行过滤适当。

如果您只想保持
元素的完整性,那么可以使用PHP的
strip_tags()
函数

剥离\u标记-从字符串中剥离HTML和PHP标记

它接受一个定义允许的标记的附加参数,因此您只需将唯一允许的标记设置为
标记

$output = curl_exec($ch);
$linksOnly = strip_tags($ouput,'link');
这里的主要问题是,您不知道您将获得什么内容,并且尝试使用为该任务设计的工具以外的任何东西来解析HTML内容可能会给您带来;)

参考-


如果您只想保留
元素,那么可以使用PHP的
strip_tags()
函数

剥离\u标记-从字符串中剥离HTML和PHP标记

它接受一个定义允许的标记的附加参数,因此您只需将唯一允许的标记设置为
标记

$output = curl_exec($ch);
$linksOnly = strip_tags($ouput,'link');
这里的主要问题是,您不知道您将获得什么内容,并且尝试使用为该任务设计的工具以外的任何东西来解析HTML内容可能会给您带来;)

参考-

使用正则表达式:

preg_match_all('/rel="stylesheet" href="(.*)">/', $output, $matches);

if (isset($matches[1]) && count($matches[1]))
{
  foreach ($matches as $value)
  {
    echo '<link rel="stylesheet" href="'.$value.'">';
  }
}
preg_match_all('/rel=“stylesheet”href=“(.*”>/”,$output,$matches);
if(设置($matches[1])&计数($matches[1]))
{
foreach($匹配为$值)
{
回声';
}
}
使用正则表达式:

preg_match_all('/rel="stylesheet" href="(.*)">/', $output, $matches);

if (isset($matches[1]) && count($matches[1]))
{
  foreach ($matches as $value)
  {
    echo '<link rel="stylesheet" href="'.$value.'">';
  }
}
preg_match_all('/rel=“stylesheet”href=“(.*”>/”,$output,$matches);
if(设置($matches[1])&计数($matches[1]))
{
foreach($匹配为$值)
{
回声';
}
}
使用

include('simple_html_dom.php');
//从URL或文件获取DOM
$html=file\u get\u html('http://www.example.com/');
//或者,您可以通过curl请求获取$html字符串,并说
//$html=str_get_html($html);
//查找所有“链接”
foreach($html->find('link')作为$e){
如果($e->type=“text/css”&&strpos($e->href,“:/”)!==false)//您不需要相对的css href。对吗?
echo$e->href.“
”; }
使用

include('simple_html_dom.php');
//从URL或文件获取DOM
$html=file\u get\u html('http://www.example.com/');
//或者,您可以通过curl请求获取$html字符串,并说
//$html=str_get_html($html);
//查找所有“链接”
foreach($html->find('link')作为$e){
如果($e->type=“text/css”&&strpos($e->href,“:/”)!==false)//您不需要相对的css href。对吗?
echo$e->href.“
”; }
如果我的网站有
,该怎么办?我认为正则表达式有几个警告。我完全同意,但OP没有提供任何输出示例
href
也可以在
rel
之前。这就是为什么人们说不应该使用正则表达式来解析HTML,我想^ ^ ^啊,它确实回答了这个问题,所以+1。如果我的网站有
?我认为正则表达式有几个警告。我完全同意,但OP没有提供任何输出示例
href
也可以在
rel
之前。这就是为什么人们说不应该使用正则表达式来解析HTML,我想^ ^ ^啊,它确实回答了这个问题,因此+1.知道
simple\u html\u dom.php
来自何处可能很有趣。知道
simple\u html\u dom.php
来自何处可能很有趣。