preg_match_all 获取 2 个字符串之间的文本

发布于 2024-11-28 12:22:27 字数 180 浏览 0 评论 0原文

我想得到两个字符串之间的字符串。

background:url(images/cont-bottom.png) no-repeat;

基本上我想获取 url() 之间的所有文本

希望有人可以帮助我。谢谢!

I would like to get string between 2 strings.

background:url(images/cont-bottom.png) no-repeat;

Basically I would like to get all text between url( and )

Hope somebody can help me. thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

£烟消云散 2024-12-05 12:22:27
preg_match('~[(](.+?)[)]~',$string,$matches);
preg_match('~[(](.+?)[)]~',$string,$matches);
孤千羽 2024-12-05 12:22:27
<?
$css_file = 
   'background:url(images/cont-bottom.png) no-repeat;
    background:url(images/cont-left.png) no-repeat;
    background:url(images/cont-top.png) no-repeat;
    background:url(images/cont-right.png) no-repeat;';

//matches all images inside the css file and loop the results

preg_match_all('/url\((.*?)\)/i', $css_file, $css_images, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($css_images[0]); $i++) {
   echo $css_images[1][$i]."<br>";
}

/*
Outputs:
images/cont-bottom.png
images/cont-left.png
images/cont-top.png
images/cont-right.png
*/    
?>
<?
$css_file = 
   'background:url(images/cont-bottom.png) no-repeat;
    background:url(images/cont-left.png) no-repeat;
    background:url(images/cont-top.png) no-repeat;
    background:url(images/cont-right.png) no-repeat;';

//matches all images inside the css file and loop the results

preg_match_all('/url\((.*?)\)/i', $css_file, $css_images, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($css_images[0]); $i++) {
   echo $css_images[1][$i]."<br>";
}

/*
Outputs:
images/cont-bottom.png
images/cont-left.png
images/cont-top.png
images/cont-right.png
*/    
?>
西瑶 2024-12-05 12:22:27

(.*?) 不会继续到新行搜索匹配项,但 (.*) 将继续到新行

$string = 'background:url(images/cont-bottom.png) no-repeat;';

preg_match_all("#background:url\((.*?)\)#", $string, $match);

echo  $match[1][0];

输出:

images/cont-bottom.png

(.*?) will not continue to a new line to search matches, but (.*) will continue to a new line

$string = 'background:url(images/cont-bottom.png) no-repeat;';

preg_match_all("#background:url\((.*?)\)#", $string, $match);

echo  $match[1][0];

Output:

images/cont-bottom.png
翻了热茶 2024-12-05 12:22:27

试试这个正则表达式:

/url\s*\([^\)]+\)/

Try this regex:

/url\s*\([^\)]+\)/
辞别 2024-12-05 12:22:27

在这种特殊情况下尝试这个

function getInbetweenStrings($start, $end, $str){
    $matches = array();
    $regex = "/$start(.*)$end/";
    preg_match_all($regex, $str, $matches);
    return $matches[1];
}

$str = "background:url(images/cont-bottom.png) no-repeat;";
$str_arr = getInbetweenStrings("\(", "\)", $str);

echo '<pre>';
print_r($str_arr);

try this for this particular situation

function getInbetweenStrings($start, $end, $str){
    $matches = array();
    $regex = "/$start(.*)$end/";
    preg_match_all($regex, $str, $matches);
    return $matches[1];
}

$str = "background:url(images/cont-bottom.png) no-repeat;";
$str_arr = getInbetweenStrings("\(", "\)", $str);

echo '<pre>';
print_r($str_arr);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文