PHP Preg匹配 - 获取包装值

时间:2015-12-23 08:59:31

标签: php regex preg-match

我想使用preg match

提取所有包装的文本值

所以

background: url("images/gone.png");
color: #333;
...

background: url("images/good.png");
font-weight: bold;

从上面的字符串, 我想抓住

images/gone.png
images/good.png

这对于什么是正确的命令行?

4 个答案:

答案 0 :(得分:2)

http://www.phpliveregex.com/p/e3u

这个正则表达式会这样做:

/^background: url\("(.*?)"\);$/

更好地了解正则表达式,值得花时间: http://regexone.com/

答案 1 :(得分:2)

$pattern = '/(?:\"([^\"]*)\")|(?:\'([^\']*)\')|(?:\(([^\(]*)\))/i';
$string = '
background: url("images/gone.png1");
background: url(\'images/gone.png2\');
background: url(images/gone.png3);
color: "#333;"';
preg_match_all($pattern, $string,$matches);
print_r($matches[0]);

正则表达式将获取用双引号括起来的所有字符串。

如果您只想获取背景,我们可以在正则表达式模式中添加相同的字符串。

答案 2 :(得分:2)

$regex = '~background:\s*url\([\"\']?(.*?)[\"\']?\);~i';
$mystr = 'background: url("images/gone.png");
color: #333;
...

background: url("images/good.png");
font-weight: bold;';
preg_match_all($regex, $mystr, $result);
print_r($result);

***Output:***
Array ( [0] => Array ( [0] => background: url("images/gone.png"); [1] => background: url("images/good.png"); ) [1] => Array ( [0] => images/gone.png [1] => images/good.png ) )

答案 3 :(得分:2)

在php中,你应该这样:

$str = <<<CSS
    background: url("images/gone.png");
    color: #333;

    background: url("images/good.png");
    font-weight: bold;
CSS;

preg_match_all('/url\("(.*?)"\)/', $str, $matches);
var_dump($matches);

然后,你会看到这样的东西作为输出:

array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(22) "url("images/gone.png")"
    [1]=>
    string(22) "url("images/good.png")"
  }
  [1]=>
  array(2) {
    [0]=>
    string(15) "images/gone.png"
    [1]=>
    string(15) "images/good.png"
  }
}

因此,带有网址的列表将位于$matches[1]:)