Php 预赛

Php 预赛,php,preg-match-all,Php,Preg Match All,有人能给我解释一下吗?我不熟悉preg_match_all filters,这段代码工作得很好,只是如果纬度和经度之一为负值,它不会返回负值 if ( preg_match_all( "#<td>\s+-?(\d+\.\d+)\s+</td>#", $output, $coords ) ) { list( $lat, $long ) = $coords[1]; echo "Latitude: $lat\nLongitude: $long\n"; } if

有人能给我解释一下吗?我不熟悉preg_match_all filters,这段代码工作得很好,只是如果纬度和经度之一为负值,它不会返回负值

if ( preg_match_all( "#<td>\s+-?(\d+\.\d+)\s+</td>#", $output, $coords ) ) {
    list( $lat, $long ) = $coords[1];
    echo "Latitude: $lat\nLongitude: $long\n";
}
if(preg\u match\u all(“\s+-?(\d+\.\d+\s+\”,$output,$coords)){
列表($lat,$long)=$coords[1];
echo“纬度:$lat\n长度:$long\n”;
}
输出:
纬度:30.6963经度:71.6207
(经度缺少一个“-”)

变量
的值取决于括号内的代码所匹配的内容。将可选减号(
-?
)移到括号内应该可以做到:

if ( preg_match_all( "#<td>\s+(-?\d+\.\d+)\s+</td>#", $output, $coords ) ) {
if(preg#u match#u all(“#\s+(?\d+\.\d+\s+)”,$output,$coords)){

有关php中preg的详细信息以及
preg\u match\u all

的详细信息,请参见。
coords
变量的值取决于括号内的代码匹配的内容。将可选减号(
-?
)移动到括号内可以实现以下目的:

if ( preg_match_all( "#<td>\s+(-?\d+\.\d+)\s+</td>#", $output, $coords ) ) {
if(preg#u match#u all(“#\s+(?\d+\.\d+\s+)”,$output,$coords)){

有关php中preg的详细信息以及preg\u match\u all的详细信息,请参见。括号中没有您的符号。$coords[1]包含与(和)之间的部分匹配的正则表达式部分。但是,+-在括号之前,因此它们不是匹配和返回的内容的一部分。

您的符号不在括号中。$coords[1]包含正则表达式中与(和)之间的部分匹配的部分。但是,+-在括号之前,因此它们不是匹配和返回的内容的一部分。

如果您不喜欢
preg\u match()
API,您可以使用-它真的很酷

$p = "<td>\s+(-?\d+\.\d+)\s+</td>"; // no delimiters :)

pattern($p)->match($output)->forEach(function (Match $match) {
    $match->text();

    // or
    $match->group(1)->text();
    // or check if it's matched
    $match->group(1)->matched();
});
$p=“\s+(?\d+\.\d+\s+”;//无分隔符:)
模式($p)->match($output)->forEach(函数(match$match){
$match->text();
//或
$match->group(1)->text();
//或者检查是否匹配
$match->group(1)->matched();
});

如果你不喜欢
preg\u match()
API,你可以使用它——它真的很酷

$p = "<td>\s+(-?\d+\.\d+)\s+</td>"; // no delimiters :)

pattern($p)->match($output)->forEach(function (Match $match) {
    $match->text();

    // or
    $match->group(1)->text();
    // or check if it's matched
    $match->group(1)->matched();
});
$p=“\s+(?\d+\.\d+\s+”;//无分隔符:)
模式($p)->match($output)->forEach(函数(match$match){
$match->text();
//或
$match->group(1)->text();
//或者检查是否匹配
$match->group(1)->matched();
});

您能给我提供一个链接,让我了解preg\u match\u all中使用的所有过滤器,我需要学习this@unknown(yahoo):添加了一段关于文档的内容。你能给我提供一个链接,让我了解preg_match_all中使用的所有过滤器吗this@unknown(雅虎):增加了一段关于文档的内容