php - preg_replace with optional matches -
php - preg_replace with optional matches -
well.. creating blog myself , i've created preg_replace "posts" if type:
[code="php"]foobar[!code]
he prints
<script type="syntaxhighlighter" class="brush: $1; html-script: true"><![cdata[ foobar ]]></script>
everything runs ok preg_replace:
/\[code="(.*?)"\]/
(for prefix)
/\[!code\]/
(for sufix)
but want add together additional alternative check if user has typed... thought that:
[code="php" [1,3]] foo [!code]
return this:
<script type="syntaxhighlighter" class="brush: $1; highlight: [1,3]; html-script: true">...
otherwise if have not $2 (user has typed [code="php"]) homecoming this:
<script type="syntaxhighlighter" class="brush: $1; html-script: true">
how can create statement in same preg_replace? in advance , sry bad english.
edit
i've achieved solution *preg_replace_callback*
you need utilize preg_replace_callback want:
function format_prefix($matches) { homecoming '<script type="syntaxhighlighter" class="brush: ' . $matches[1] . (isset($matches[2]) ? '; highlight: ' . $matches[2] : '') . '; html-script: true">'; } $s = '[code="php"]foobar[!code]'."\n".'[code="php" [1,3]]foobar[!code]'; echo preg_replace_callback('/\[code="(.*?)"(?:\s+(\[\d+,\d+\]))?\]/', 'format_prefix', $s);
php preg-replace
Comments
Post a Comment