Php 从正则表达式获取多个结果

Php 从正则表达式获取多个结果,php,regex,Php,Regex,我想从正则表达式中得到多个结果,但它不能正常工作 测试字符串: <div class="row-fluid pybar-row"> <span class="pybar-label text-left"> <span class="">Male</span> </span> <span class="pybar-bars"> <div class="row-fluid"&

我想从正则表达式中得到多个结果,但它不能正常工作

测试字符串:

<div class="row-fluid pybar-row">
    <span class="pybar-label text-left">
        <span class="">Male</span>
    </span>
    <span class="pybar-bars">
    <div class="row-fluid">
        <span class="pybar-bar pybar-l" style="">
            <span class="pybar-bg">
                <span style="width:100%">&nbsp;</span>
            </span>
        </span>
        <span class="pybar-bar pybar-r">
            <span class="pybar-bg">
                <span style="width:78%;">&nbsp;</span>
            </span>
        </span>
    </div>
</div>

男性
我只想获得style=“width:X%的数量

我使用了这个正则表达式:

$re = "/<span class=\"pybar-bg\">.*?width:(.*?)%/s";
$re=“/.*”宽度:(.*)%/s”;

但它只返回第一个数字。我想要字符串中的所有数字,并拥有这个类。

您的正则表达式工作正常。使用
preg\u match\u all
提取所有匹配项:

$s = <<<HTML
<div class="row-fluid pybar-row">
    <span class="pybar-label text-left">
        <span class="">Male</span>
    </span>
    <span class="pybar-bars">
    <div class="row-fluid">
        <span class="pybar-bar pybar-l" style="">
            <span class="pybar-bg">
                <span style="width:100%">&nbsp;</span>
            </span>
        </span>
        <span class="pybar-bar pybar-r">
            <span class="pybar-bg">
                <span style="width:78%;">&nbsp;</span>
            </span>
        </span>
    </div>
</div>
HTML;


$re = "/<span class=\"pybar-bg\">.*?width:(.*?)%/s";
if( preg_match_all( $re, $s, $matches ) ) {
    var_dump( $matches[1] );
}

您的正则表达式工作正常。使用
preg\u match\u all
提取所有匹配项:

$s = <<<HTML
<div class="row-fluid pybar-row">
    <span class="pybar-label text-left">
        <span class="">Male</span>
    </span>
    <span class="pybar-bars">
    <div class="row-fluid">
        <span class="pybar-bar pybar-l" style="">
            <span class="pybar-bg">
                <span style="width:100%">&nbsp;</span>
            </span>
        </span>
        <span class="pybar-bar pybar-r">
            <span class="pybar-bg">
                <span style="width:78%;">&nbsp;</span>
            </span>
        </span>
    </div>
</div>
HTML;


$re = "/<span class=\"pybar-bg\">.*?width:(.*?)%/s";
if( preg_match_all( $re, $s, $matches ) ) {
    var_dump( $matches[1] );
}

你的正则表达式将在第一场比赛中返回。要匹配所有值,请使用
g
modifier(全局匹配)


您的正则表达式将在第一次匹配时返回。要匹配所有值,请使用
g
modifier(全局匹配)


这不是这个问题的正确答案:它被标记为
php
,其中不存在“g”修饰符。相反,必须使用
preg\u match\u all()
,正如@Nicolai的回答所说。这不是这个问题的正确答案:它被标记为
php
,其中不存在“g”修饰符。相反,必须使用
preg\u match\u all()
,正如@Nicolai的回答所说的。再一次。小马。再一次。
$re = "/<span class=\"pybar-bg\">.*?width:(.*?)%/sg";
100
78