我想使用preg match
提取所有包装的文本值所以
background: url("images/gone.png");
color: #333;
...
background: url("images/good.png");
font-weight: bold;
从上面的字符串, 我想抓住
images/gone.png
images/good.png
这对于什么是正确的命令行?
答案 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]
:)