使用preg_match将style.css转换为内容

时间:2017-03-22 05:53:02

标签: php regex

我希望style.css收到收到的内容。

 preg_match("/<link rel='stylesheet'.*href='(.*?style\.css.*?)'.*\>/i",$src,$matches);

以上代码工作正常。但我需要更清晰的过滤器,如下所示 如果样式的名称如下,则避免获取css。

push_ucid_bar_style.css

只获得style.css 那么我应该如何改变我的代码。

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

<link rel='stylesheet'.*href='(.*?(?<!push_ucid_bar_)style\.css.*?)'.*\>

说明:

我刚刚在你的正则表达式中留下了负面看法。当您找到style.css时,只有在push_ucid_bar_

之前没有匹配时才会匹配

Demo

    $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以检查是否匹配。如果匹配那么你应该忽略它。

对于第二个选项,您可以尝试:

Second Option

答案 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

实现你想要的目标