Sophie Mattoug wrote: > Adam i Agnieszka Gasiorowski FNORD wrote: > > > I'm trying to develop a regex for matching > > with preg_match_all, I want to match such things > > like image name, image alt text, image title in > > construct like this: > > > > ....html... > > <div class="class" style="style"> > > <img src="img=name" alt="alt" title="title" /> > > <span class="class" style="style"> > > text > > </span> > > </div> > > ....html... > > The rexex as for now is: > > > >define( > > 'REGEX_IMAGE_NAMES_AND_TITLES_AND_ALTS_FROM_CONTENT', > > '{ > > (?:<\s*img\s+src\s*=\s*(?:"|\')?\s*(?:img)?\s*=\s*) # <img> > > (?>\b\S+\b) # name > > (?:title\s*=\s*(?:"|\')) # title > > (?>\b\S*\b) > > (?:"|\')*\s* > > (?:alt\s*=\s*(?:"|\')) # alt > > (?>\b\S*\b) > > (?:"|\')*\s* > > (?:\"|\'|>|/>|\s) # <img /> > > }Uix' > > ); > > > > , but it does not match. How can I fix it? > > > > > > It's not so easy to match an entire IMG tag, because first of all the > attributes are not always in the same order. If I were you, this is what > I would do : > ereg("<img ([^>]+)>", $your_text, $img_array); > $i = 0; > foreach ($img_array as $img) { > while (ereg("^(.+)=\"(.+)\"", "", $img, $regs)) > $images[$i][$regs[1]] = $regs[2]; > $i++; > } > > Hope this helps,
What I really want to get out of this regex is 1) image name 2) image alt text 3) image title text , so only those three parentheses are of capturing kind and the rest is marked as non-capturing... I wonder will this work (if I change this part): (?: (?:title\s*=\s*(?:"|\')) # title (?>\b\S*\b) (?:"|\')*\s* | (?:alt\s*=\s*(?:"|\')) # alt (?>\b\S*\b) (?:"|\')*\s* ) , notice the "or" character. I guess it should match, as the order is not important now... I love monster regexes ;8]. -- Seks, seksić, seksolatki... news:pl.soc.seks.moderowana http://hyperreal.info { iWanToDie } WiNoNa ) ( http://szatanowskie-ladacznice.0-700.pl foReVeR( * ) Poznaj jej zwiewne kształty... http://www.opera.com 007 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php