/ / PHP regex corrispondenza esatta tra più virgolette - php, regex

PHP regex la corrispondenza esatta tra virgolette multiple - php, regex

Ho questa stringa (o simile):

<img data-src="/images/useJS: "true", useZoom: "#zoom1", image_big: "//cdn.example.com/big.jpg", image_orig: "//cdn.example.com/orig.gif", image_icon: "//thisDomain.com/images/icon.png"" />
...

Sto usando questo regex in preg_match_all:

preg_match_all("/:s?("[^"]+(.jpe?g|.gif|.png)")/siU", $string, $match);

Le partite sono:

[1][0] => : ", useZoom: "#zoom1", image_big: "//cdn.example.com/big.jpg"
[1][1] => : "//cdn.example.com/big.jpg"
...

Mi piace solo la seconda partita e senza virgola in regex. Non mi piace la prima partita, mi serve solo l'immagine uri.

risposte:

0 per risposta № 1

Usa questo:

preg_match_all("/"[^"]+.(?:jpe?g|gif|png)"/", $string, $match);

Ho cambiato [^"]+ a [^"]+, in modo che corrisponda solo alle stringhe tra virgolette singole che terminano in una delle estensioni. Inoltre, devi scappare . prima delle estensioni, quindi verrà abbinato letteralmente.

DEMO