regex - PHP: preg_split -
i need on regular expression here.
i want php able split string in sections of arrays such substring enclosed <%me %> in own slot.
so example,
hi there how <%me date(); %> => {"hi there how ", "<%me date(); %>} hi there how you<%me date(); %> => {"hi there how you", "<%me date(); %>} hi there how you<%me date(); %>goood => {"hi there how you", "<%me date(); %>, "good" hi there how you<%me date(); %> => {"hi there how you", "<%me date(); %>}, " good"}
note white space won't stop tags getting parsed in.
on capturing splitting delimiter in preg
you can use preg_split_delim_capture
split on , capture delimiter.
remember put delimiter in capturing group (…)
work properly.
here's example:
$text = 'abc123xyz456pqr'; $parts = preg_split('/(\d+)/', $text, -1, preg_split_delim_capture); print_r($parts);
this prints (as seen on ideone.com):
array ( [0] => abc [1] => 123 [2] => xyz [3] => 456 [4] => pqr )
references
- regular-expressions.info/brackets capturing
preg-split
-preg_split_delim_capture
- if set, parenthesized expression in delimiter pattern captured , returned well.
back question
in case, can try delimiter pattern (<%me[^%]+%>)
. is:
<%me
, literally[^%]+
, i.e.%
%>
, literally- the whole thing captured in group 1
if %
can appear in tag, can try (<%me.*?%>)
.
here's example:
$text = 'prefix<%me date() %>suffix'; $parts = preg_split('/(<%me[^%]+%>)/', $text, -1, preg_split_delim_capture); print_r($parts);
the above prints (as seen on ideone.com):
array ( [0] => prefix [1] => <%me date() %> [2] => suffix )
Comments
Post a Comment