preg_match_all

3 Cevap php

Enlem ve boylam biri negatif ise negatif bir değer döndürmez dışında bazı bir i preg_match_all filtreleri aşina değilim bana bunu açıklayabilir misiniz, bu kod çalışıyor.

if ( preg_match_all( "#<td>\s+-?(\d+\.\d+)\s+</td>#", $output, $coords ) ) {
    list( $lat, $long ) = $coords[1];
    echo "Latitude: $lat\nLongitude: $long\n";
}

output: Latitude: 30.6963 Longitude: 71.6207 (longitude is missing a '-')

3 Cevap

coords değişkeninin değeri parantez içinde kodu ile eşleşen ne bağlıdır. İsteğe bağlı eksi işareti (-?) parantez içinde hareket hile yapmak gerekir:

if ( preg_match_all( "#<td>\s+(-?\d+\.\d+)\s+</td>#", $output, $coords ) ) {

Php gebelik ve php.net/preg_match_all detayları için hakkında ayrıntılar için official documentation bak preg_match_all.

Sizin işareti parantez içinde değildir. $ Coords [1] arası (ve) kısmını eşleşen regex kısmını içerir. + - Böylece onlar eşleşen ne parçası değildir ve geri olsa da, parantez önce vardır.

"-" parantez içine dahil edilmelidir