note 35586 added to function.preg-match-all

From: Date: Sat, 06 Sep 2003 23:19:29 +0000
Subject: note 35586 added to function.preg-match-all
Groups: php.notes 
Request: Send a blank email to php-notes+get-55559@lists.php.net to get a copy of this message
I used remcomans Regexp to get the needed Information in a more useful format, and it also can parse all functions in a string: function ParseFunctions($str) { $funcs=array(); preg_replace("/\[([^ ]*) ([^\]]*)\]/e", "array_push(\$funcs,ParsePars('\\1','\\2'))",$str); return $funcs; } function ParsePars($func,$str) { //all on one line!!!! $regexp = '/([a-zA-Z0-9]+)[\s]{0,1}=[\s]{0,1}((\')|"|) ((?:(?:\\\\\\2)|(?(3)[^\']|[^"]))*)(\2)(?:\s|$)/U'; preg_match_all($regexp,$str,$matches,PREG_SET_ORDER); $pars[0]=$func; foreach($matches as $value) $pars[$value[1]]=$value[4]; return $pars; } example: $str="[img title='blub' src='bla' oink='oink'] blablub bla bla [img src='bla' oink='blub']"; $results=ParseFunctions($str); echo "<pre>"; print_r($results); will produce: Array ( [0] => Array ( [0] => img [title] => blub [src] => bla [oink] => oink ) [1] => Array ( [0] => img [src] => bla [oink] => blub ) ) ---- Manual Page -- http://www.php.net/manual/en/function.preg-match-all.php Edit Note -- http://master.php.net/manage/user-notes.php?action=edit+35586 Delete Note -- http://master.php.net/manage/user-notes.php?action=delete+35586&report=yes Reject Note -- http://master.php.net/manage/user-notes.php?action=reject+35586&report=yes

« previous php.notes (#55559) next »