在php中想要从html头部收集样式行并用空格替换它们。 我尝试使用preg_match_all和preg_replace但我没有工作解决方案。
$myhtml="
<title>my title</title>
<link rel="stylesheet" type="text/css" href="style1.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" />
<link href="style2.css" type="text/css" rel="stylesheet" />
<!--[if lt IE 9]>
<link href="style3.css" rel="stylesheet" type="text/css" />
<![endif]-->
<meta name="author" content="i'm the author" />
<!--[if lt IE 6]>
<link href="style4.css" type="text/css" rel="stylesheet"/>
<![endif]-->
<style>
#body{background-color:#CCC;}
</style>
";
我期待结果
$myhtml="
<title>my title</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" />
<meta name="author" content="i'm the author" />
";
$extracted_styles="
<link rel="stylesheet" type="text/css" href="style1.css" />
<link href="style2.css" type="text/css" rel="stylesheet" />
<!--[if gt IE 8]>
<link href="style3.css" rel="stylesheet" type="text/css" />
<![endif]-->
<!--[if lt IE 6]>
<link href="style4.css" type="text/css" rel="stylesheet"/>
<![endif]-->
<style>
#body{background-color:#CCC;}
</style>
";
php:我尝试首先提取条件css,稍后链接rel但是已经第一步不能正常工作
$styles='';
//extract conditional css
preg_match_all('/<!--(.*)-->/i', $myhtml, $matches);
$styles.=implode(" ",$matches);
preg_replace('/<!--(.*)-->/i', "", $myhtml);
答案 0 :(得分:0)
我看到的问题是你的正则表达式和结尾的开头是不同的行。将您的规则更改为:
$styles='';
//extract conditional css
preg_match_all('/<!--(.*)-->/is', $myhtml, $matches);
$styles.=implode(" ",$matches);
preg_replace('/<!--(.*)-->/is', "", $myhtml);
因为s修饰符暗示点(。)不仅抓住“除了行的末尾之外的任何东西”,而且还“行的末尾”。