Bir web sitesi kapalı bir fiyat kazıyın

3 Cevap php

Ben PHP ve Regexes kullanarak bir web sayfası bir fiyat kazımak için çalışıyorum. Fiyat formatında £ 123,12 veya 123,12 $ (yani, kilo ya da dolar) olacak.

Ben libcurl kullanarak içeriği kadar yükleme ediyorum. Çıkışı daha sonra preg_match_all içine gidiyor. Yani bu gibi biraz görünüyor:

$contents = curl_exec($curl);

preg_match_all('/(?:\$|£)[0-9]+(?:\.[0-9]{2})?/', $contents, $matches);

Şimdiye kadar bu kadar basit. Sorun PHP hiç bir şey eşleşen değil, bir - sayfada fiyat vardır bile. PHP bu gibi görünmüyor - Ben orada 'TL' karakteri ile bir sorun olmaktan aşağı daralmış ettik.

Ben bu bir charset sorun olabileceğini düşünüyorum. Ama ne olursa olsun, ben bu maç için PHP almak gibi olamaz! Herkes herhangi bir fikir var mı?

(Edit: Ben aynı regex ve sayfa içeriği kullanarak Regex Test Tool kullanmayı deneyin eğer dikkat etmelisiniz, iyi çalışıyor)

3 Cevap

Eğer TL önünde \ kullanmaya çalıştığınızda mı

preg_match_all('/(\$|\£)[0-9]+(\.[0-9]{2})/', $contents, $matches);

I have try this expression with .Net with \£ and it works. I just edited it and removed some ":". alt text

Curl size kötü kodlama (bu yazının yorum) verme olasılığı hakkında benim yorum okuyun.

belki kiloluk html varlık yedek kullanıcısı var? i bir program (yani yerel sabit metin karşı maç) tutturarak çeşit ile regexpi denemek gerektiğini düşünüyorum.

'/(?:\$|£)\d+(?:\.\d{2})?/': Bu gibi benim regexpi değiştirmek istiyorum

Bu basit değerler için çalışması gerekir.

'#(?:\$|\£|\€)(\d+(?:\.\d+)?)#'

Bu 234.343 ve 34,454.45 gibi bin ayırıcı ile çalışmaz.