php - Get all matches in a regular expression -
i have url:
uploads/offers/picture/_ytoxontzojc6im9wdglvbnmio3m6mty6inpvb21dcm9wldi4ms_/_wymdaio30=_/518edc82d94b0-201341717250_descuen_a06d000000fkvwpiak_1_1.jpg
and need /_(.*)_/
parts, preg_match_all
expression seems bad formed:
preg_match_all('#/_([^_/]+)_/#', $url, $params);
returns
array ( [0] => array ( [0] => /_ytoxontzojc6im9wdglvbnmio3m6mty6inpvb21dcm9wldi4ms_/ ) [1] => array ( [0] => ytoxontzojc6im9wdglvbnmio3m6mty6inpvb21dcm9wldi4ms ) )
and need
array ( [0] => array ( [0] => /_ytoxontzojc6im9wdglvbnmio3m6mty6inpvb21dcm9wldi4ms_/ [1] => /_wymdaio30=_/ ) [1] => array ( [0] => ytoxontzojc6im9wdglvbnmio3m6mty6inpvb21dcm9wldi4ms [1] => wymdaio30= ) )
some problem common string parts in expression?
one problem current solution matches /
@ end of expression explosion pill's answer says; using positive lookahead solve problem.
another possible issue [^_/]
part may end breaking regex if input contains underscores part of matches want capture.
to solve both issues @ once:
~/_(.+?)_(?=/)~
this seems me closer after: "whenever see sequence /_
start capturing input until come across sequence _/
". lone underscores inside input not break this.
Comments
Post a Comment