Raspe um preço fora de um website

votos
0

Estou tentando raspar um preço a partir de uma página web usando PHP e Regexes. O preço será no formato de £ 123,12 ou US $ 123,12 (ou seja, libras ou dólares).

Eu estou carregando-se o conteúdo usando libcurl. A saída do qual é então entrar em preg_match_all. Portanto, parece um pouco como este:

$contents = curl_exec($curl);

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

Até agora tão simples. O problema é, PHP não está combinando alguma coisa - mesmo quando há preços na página. Eu reduzi-lo a existência de um problema com o caráter '£' - PHP não parecem gostar dele.

Acho que isso pode ser um problema de charset. Mas o que eu faço, eu não consigo obter PHP para combiná-lo! Alguém tem alguma ideia?

(Edit: Devo observar se eu tentar usar a ferramenta de teste Regex usando o mesmo regex e conteúdo da página, ele funciona bem)

Publicado 29/11/2008 em 16:28
fonte usuário
Em outras línguas...                            


3 respostas

votos
1

Você tentar usar \ na frente de £

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

Tenho tentar essa expressão com .Net com \ £ e ele funciona. Eu só editado e removido alguns ":". texto alt http://clip2net.com/clip/m12122/1227972904-clip-9kb.png

Leia o meu comentário sobre a possibilidade de onda que lhe dá mau codificação (comentário deste post).

Respondeu 29/11/2008 em 16:32
fonte usuário

votos
0

talvez libra tem é a substituição entidade html? eu acho que você deve tentar a sua expressão regular com algum tipo de curral programa (isto é combiná-lo contra o texto fixo no local).

Eu mudaria a minha expressão regular como esta: '/(?:\$|£)\d+(?:\.\d{2})?/'

Respondeu 29/11/2008 em 16:37
fonte usuário

votos
0

Isso deve funcionar para valores simples.

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

Isso não vai funcionar com separador de milhar como 234343 e 34,454.45.

Respondeu 29/11/2008 em 16:41
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more