我希望style.css
收到收到的内容。
preg_match("/<link rel='stylesheet'.*href='(.*?style\.css.*?)'.*\>/i",$src,$matches);
以上代码工作正常。但我需要更清晰的过滤器,如下所示 如果样式的名称如下,则避免获取css。
push_ucid_bar_style.css
只获得style.css
那么我应该如何改变我的代码。
答案 0 :(得分:0)
你可以试试这个:
<link rel='stylesheet'.*href='(.*?(?<!push_ucid_bar_)style\.css.*?)'.*\>
说明:
我刚刚在你的正则表达式中留下了负面看法。当您找到style.css时,只有在push_ucid_bar_
$re = '/<link rel=\'stylesheet\'.*href=\'(.*?(?<!push_ucid_bar_)style\.css.*?)\'.*\>/i';
$str = '<link rel=\'stylesheet\' bla bla bla href=\'1style.css\'bla bla bla \\>
<link rel=\'stylesheet\' bla bla bla href=\'2style.css\'bla bla bla \\>
<link rel=\'stylesheet\' bla bla bla href=\'push_ucid_bar_style.css\'bla bla bla \\>
<link rel=\'stylesheet\' bla bla bla href=\'3style.css\'bla bla bla \\>
<link rel=\'stylesheet\' bla bla bla href=\'4style.css\'bla bla bla \\>';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
for($i=0;$i<count($matches);$i++)
echo $matches[$i][1]."\n";
更新
如果您只有几个名字可以忽略,那么您将|
(OR)条件置于上述背后的负面看法中......
但是如果有一长串要忽略的名称,那么首先使用原始正则表达式获取名称并循环遍历名称的ignoreList以检查是否匹配。如果匹配那么你应该忽略它。
对于第二个选项,您可以尝试:
答案 1 :(得分:0)
example_string = --time_partitioning_type=DAY
你需要使用 $ matches [1] 进行更多过滤,它会返回你的'push_ucid_bar_style.css&#39;
您现在可以通过http://php.net/manual/en/function.explode.php进行另一次检查,或者您可以写http://php.net/manual/en/function.strpos.php或
你可以使用http://php.net/manual/en/function.preg-match.php
实现你想要的目标