php - Take what's between [code][/code] and apply changes -
i want make code box, can apply changes. if have this: $var= "word";
inside these [code]
here [/code]
, change $var
red color , "word"
green.
i used preg_replace
select what's between these [code]
[/code]
.
$codebox = preg_replace("/\[code\](.*?)\[\/code\]/","$1",$string);
the thing preg_replace can outsider changes (to whole code). want changes inside these [code]
[/code]
. like: background color, text color, text font, text font-weight , etc... that's mean need out apply changes put back.
i want able use str_replace
, preg_replace
functions on $1
not on $string
.
for example change"word"
green. i'll use
preg_replace("/(\".*?\")/","<span style='color: #090;'>$1</span>",$string)
and can't use preg_replace
inside preg_replace
, can i? don't know if i'm using wrong function here, or there way this.
you may find patterns wrong, correct me learnt them yesterday.
using preg_replace_callback:
$string = '[code]$var = "word";[/code]'; $codebox = preg_replace_callback("/\[code\](.*?)\[\/code\]/",function($m){ // following replacements demo $m[1] = preg_replace('/"([^"]+)"/', '"<span style="color:#0d0;">$1</span>"', $m[1]); // green value $m[1] = preg_replace('/(\$\w+)/', '<span style="color:#f00;">$1</span>', $m[1]); // red var name $m[1] = str_replace(' = ', '<span style="color:#00f;"> = </span>', $m[1]); // blue = sign return $m[1]; },$string); echo $codebox;
Comments
Post a Comment