Hi ladz,
Ik probeer hier een WordPress plugin een beetje te editen, hij matcht teveel in de regex.
De bedoeling is dat iedere link met een gif|png|bmp|jpe?g geparsed wordt naar dezelfde link, met een rel=lightbox erin.
Daarvoor is er de volgende code:
Het probleem gebeurt wanneer in 1 regel dit staat:
Dan matcht die regex heel die regel. Wat dat niet de bedoeling is. Ik heb na lezen gevonden dat dit wil zeggen dat die regex te greedy is.
Ik heb de volgende patterns geprobeert.
Maar geen enkele is ungreedy genoeg. Kan iemand * Snake in de goede richting schoppen?
Ik probeer hier een WordPress plugin een beetje te editen, hij matcht teveel in de regex.
De bedoeling is dat iedere link met een gif|png|bmp|jpe?g geparsed wordt naar dezelfde link, met een rel=lightbox erin.
Daarvoor is er de volgende code:
PHP:
1
2
| $pattern = "/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>/i"; $replacement = '<a$1href=$2$3.$4$5 rel="lightbox[%LIGHTID%]"$6>'; |
Het probleem gebeurt wanneer in 1 regel dit staat:
HTML:
1
| <a href="linknaarfoto.bmp">klikky</a> tekst <img src="smilie.png" ... /> |
Dan matcht die regex heel die regel. Wat dat niet de bedoeling is. Ik heb na lezen gevonden dat dit wil zeggen dat die regex te greedy is.
Ik heb de volgende patterns geprobeert.
PHP:
1
2
3
| $pattern = "/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>[^>]/i"; $pattern = "/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)[^>]>/i"; $pattern = "/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.[^>]*?)>/i"; |
Maar geen enkele is ungreedy genoeg. Kan iemand * Snake in de goede richting schoppen?
Going for adventure, lots of sun and a convertible! | GMT-8