Jump to content
jmp

Dificuldade em fazer expressão regular

Recommended Posts

jmp

Boa tarde a todos

Necessito copiar o Url de varias imagens, já fiz a expressão regular e refiz varias vezes, já andei na internet, e neste momento já estou a deitar fumo e não funciona bem.

Passo explicar.

Preciso copiar por exemplo este url:

//images.egorealestate.com/Z140x105/S5/C2689/P7114704/Tphoto/IDd08f6c00-0000-0500-0000-00000373e7ef.jpg

desta amalgama

<img class="thumbnail current" src="//images.egorealestate.com/Z140x105/S5/C2689/P7114704/Tphoto/IDd08f6c00-0000-0500-0000-00000373e7ef.jpg" title="DownloadPhoto" alt="DownloadPhoto%1/17" mediumlink="//images.egorealestate.com/Z640x480" originallink="//images.egorealestate.com/Z1024x768" previewsrc="/S5/C2689/P7114704/Tphoto/IDd08f6c00-0000-0500-0000-00000373e7ef.jpg" style="opacity: 1;">

Como as ER que fiz não  tiravam só o url encontrei esta na net, e que por azar tem um erro qualquer que agora não estou a ver!

preg_match_all('/(<img.*?src=['|"])([^'|"]*)(['|"].*?/?>)/mi', $url, $resultado);

Alguma mente brilhante pode fazer o favor de me dar uma ajudinha!

Desde já obrigado

Share this post


Link to post
Share on other sites
HappyHippyHippo

\s(src)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
jmp
30 minutos atrás, HappyHippyHippo disse:

\s(src)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?

 Olá HappyHippyHippo

Obrigado pela resposta, mas ainda dá este erro : Parse error: syntax error, unexpected ']' in C:\xampp\htdocs\imagens.php on line 18.

A linha 18 é expressão regular.

Fazes ideia do que seja.

Obrigado

Share this post


Link to post
Share on other sites
HappyHippyHippo

nao porque não dizes como usaste a expressão...


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
jmp

Bom dia pessoal

HappyHippyHippo  usei a tua ER na integra

preg_match_all('\s(src)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?', $conteudo, $resultado);

Não é assim?

Obrigado

Share this post


Link to post
Share on other sites
HappyHippyHippo

tens de fazer escape dos caracteres delimitadores da string ... não usas nenhum editor com syntax highlighting


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
jmp

Desta vez e para testar, utilizei o bloco de notas do Windows e guardei em utf8, e nada feito o erro mantem-se!

Share this post


Link to post
Share on other sites
M6

Tens mesmo de usar uma expressão regular? É que para obteres o que queres podes usar um parser de XML/HTML, que neste caso te simplifica muito a vida.

Se tiveres de usar uma expressão regular, creio que isto faz o que queres:

<img.*src="(.*)".*[/]+>

 


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
jmp
54 minutos atrás, jacreis disse:

@jmp sem os limitadores não vais à lado nenhum.

O regex fornecido pelo @ funciona na perfeição ora vê: https://regex101.com/r/veSTop/1 .
O teu problema está na não utilização de delimitadores:
https://secure.php.net/manual/en/regexp.reference.delimiters.php

 Olá jacreis

 Mesmo com limitadores o erro mantem-se, realmente a solução do HappyHippyHippo devia funcionar, mas há algo que faz dar este erro!

Share this post


Link to post
Share on other sites
devgoncalo

ola

não pode ser por jquery?

var qwe = $(".thumbnail").attr('src');

cumps

Share this post


Link to post
Share on other sites
jacreis

@jmp
O erro que estás a ter, (repara que ainda não deste nenhuma informação sobre o erro), deve-se muito provavelmente apenas a erros sintaxe do php. Ao utilizares um editor de texto com syntax highlight - como recomendado por @HappyHippyHippo - podes antecipar os erros de syntax, muito a semelhança do corrector ortográfico nos editores de texto.

Não usaria o notepad para editor, a não ser em ultimo caso. Tens vários editores por onde escolher, vê aqui: http://noeticforce.com/best-php-ide-for-programmers-windows-and-macComo prova de conceito, :

<?php

$conteudo ='<img class="thumbnail current" src="//images.egorealestate.com/Z140x105/S5/C2689/P7114704/Tphoto/IDd08f6c00-0000-0500-0000-00000373e7ef.jpg" title="DownloadPhoto" alt="DownloadPhoto%1/17" mediumlink="//images.egorealestate.com/Z640x480" originallink="//images.egorealestate.com/Z1024x768" previewsrc="/S5/C2689/P7114704/Tphoto/IDd08f6c00-0000-0500-0000-00000373e7ef.jpg" style="opacity: 1;">';

$regex = "/\s(src)=[\"\']?((?:.(?![\"']?\s+(?:\S+)=|[>\"']))+.)[\"']?/" ;

preg_match_all($regex, $conteudo, $resultado);

var_dump($resultado);

 


---
 

Share this post


Link to post
Share on other sites
jmp
21 horas atrás, jacreis disse:

@jmp sem os limitadores não vais à lado nenhum.

O regex fornecido pelo @HappyHippyHippo funciona na perfeição ora vê: https://regex101.com/r/veSTop/1 .
O teu problema está na não utilização de delimitadores:
https://secure.php.net/manual/en/regexp.reference.delimiters.php

 Olá jacreis

Tens toda a razão já resolvi o problema!

Tive de utilizar os limitadores e alterar a ER do HappyHippyHippo para esta:

preg_match_all('/\s(src)=["\']?((?:.(?!["\']?\s+(?:\S+)=|[>"\']))+.)["\']?/', $conteudo,$resultado);

Obrigado a todos

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.