2016-04-02 19 views
0

İşte şu anda yaşıyorum, benim PHP Kod: Ben istiyorumpreg_match html tablo maçı

function getStatus($file, $dob){ 
    $url = "http://www.passportindia.gov.in/AppOnlineProject/statusTracker/trackStatusForFileNoNew?fileNo=$file&applDob=$dob"; 
    $data = file_get_contents($url); 

    echo preg_match('/^<table cellpadding=\"4\" cellspacing=\"4\" align=\"center\" width=\"100%\" role=\"presentation\">(.*)<\/table>/',$data, $converted); 

    //$converted = preg_replace("/[^0-9.]/", "", $converted[1]); 
    //return round($converted, 3); 
} 

<table cellpadding="4" cellspacing="4" align="center" width="100%" role="presentation"> ve Halen preg_match döner 0

</table> arasındaki tüm içeriği getirilemedi.

Desteğiniz çok takdir edilecektir.

+0

Belirttiğiniz sitede bu tür öznitelik değerleri olan cellpadding = "4" cellspacing = "4" 'ile hiçbir tablo göremiyorum. Yalnızca "cellpadding =" 0 "cellspacing =" 0 "karakterine sahip tablolar var. – RomanPerekhrest

+0

Regex'inizde çok sayıda sorun olabilir. Her şeyden önce, bu tür özel yardıma ihtiyacınız varsa, metni eklemenizi tavsiye ederim soruya ayrıştırılmalıdır. Normal ifadeye gelince, çift tırnaktan kaçmanıza gerek yoktur, yeni satır meta char '^' öğesini kaldırmak ve her alanı bir \ \ + + ile değiştirmek isteyebilirsiniz. Lütfen, sayfadaki küçük değişikliklerin başarısız bir eşleşme ile sonuçlanacağını unutmayın. – Reversal

cevap

0

Bu kolay. Düzenli ifadeniz (preg_match) bir uyarı işareti simgesiyle başlar: ^

Bu, ifadenizin dizenin başında aradığı anlamına gelir. Sadece düzeltmeyi kaldırın:

preg_match('/<table cellpadding=\"4\" cellspacing=\"4\" align=\"center\" width=\"100%\" role=\"presentation\">(.*)<\/table>/',$data, $converted); 

Artık HTML dosyasında her yere bakmalıdır. o $ veri değişkeni içeriği aradığınızı olduğundan emin olmak için akıllıca olacaktır ayıklama için düşünce

için

Bazı gıda . Harici bir URL'ye başvurduğunuzdan, hangi HTML yapısını/dosya içeriğini geri alacağınızı asla bilemezsiniz. Ayrıca, bunun farkında olmadan da yanıt değişebilir (örneğin: 1 hafta önce cellspacing=\"4\" şimdi mevcuttu, ancak artık değil. Eğer gerçekten bunu yapmak zorundaysanız, yanıtı beklediğiniz kodu yazmak istediğiniz gibi değil) ve yeterli hata atar.

Ben HTML dosyası baktığınızda her yerde arama terimi yüzden hala sonuç olarak 0 alacak bile düzeltilmiş regex ile varsayılabilir görmüyorum okuyoruz.

Hayatınızı kolaylaştırmak için

Normal ifadelerinizin çalışıp çalışmadığını kontrol etmek için güzel bir araçtır: http://regexr.com/

Sonunda normal ifadeleri anlayana kadar çok kullandım (ve hala yapmaya devam ediyorum).

+0

Benim görüşüme göre, http://www.phpliveregex.com da cep telefonlarında çalıştığı için daha iyi. – Andreas