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 № 1Usa 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.