Php 拿什么';s介于[code][/code]和应用更改之间

Php 拿什么';s介于[code][/code]和应用更改之间,php,regex,preg-replace,Php,Regex,Preg Replace,我想制作代码框,在这里我可以应用更改。如果我有这个:$var=“word”在这些[code]中,这里[/code],我将$var更改为红色,将“word”更改为绿色 我使用了preg\u replace来选择这些[code][/code]之间的内容 $codebox = preg_replace("/\[code\](.*?)\[\/code\]/","$1",$string); 问题是,有了preg_replace,我可以做外部更改(对整个代码)。我想更改这些[code][/code]中的内

我想制作代码框,在这里我可以应用更改。如果我有这个:
$var=“word”
在这些
[code]
中,这里
[/code]
,我将
$var
更改为红色,
将“word”
更改为绿色

我使用了
preg\u replace
来选择这些
[code]
[/code]
之间的内容

$codebox = preg_replace("/\[code\](.*?)\[\/code\]/","$1",$string);
问题是,有了preg_replace,我可以做外部更改(对整个代码)。我想更改这些
[code]
[/code]
中的内容。如:背景色、全文字颜色、全文字字体、全文字字体重量等。。。这意味着我需要把它拿出来应用更改然后放回去

我希望能够在
$1
上使用
str\u replace
preg\u replace
功能,而不是在
$string
上使用

例如,将
“word”
更改为绿色。我会用

preg_replace("/(\".*?\")/","<span style='color: #090;'>$1</span>",$string)
preg\u replace(“/(\”*?\”/”,“$1”,$string)
我不能在
preg\u replace
内部使用
preg\u replace
,可以吗? 我不知道我是否使用了错误的函数,或者有一种方法可以做到这一点


你可能会发现我的模式错了,纠正我,我昨天刚学的

当您首先使用
preg\u match
而不是
preg\u replace
提取标记中的代码时,将代码定位在标记中会稍微简单一些:

$codebox = preg_match("/\[code\](.*)\[\/code\]/",$string,$matches);
$innercode = $matches[0];

// Then...

$innercode = preg_replace( ...

// Later on...

echo "[code]".$innercode."[/code]";
替换返回字符串,因此可以很好地嵌套它们

此外,如果您不熟悉正则表达式,我建议您查看文本到正则表达式的转换器。这有助于我更好地理解它们:


$培根%20=%20%22良好%22&-21&2&6&-23&7&1&-22

首先使用
preg\u match
而不是
preg\u replace
提取标记中的代码时,将其作为目标更为简单:

$codebox = preg_match("/\[code\](.*)\[\/code\]/",$string,$matches);
$innercode = $matches[0];

// Then...

$innercode = preg_replace( ...

// Later on...

echo "[code]".$innercode."[/code]";
替换返回字符串,因此可以很好地嵌套它们

此外,如果您不熟悉正则表达式,我建议您查看文本到正则表达式的转换器。这有助于我更好地理解它们:

$培根%20=%20%22良好%22&-21&2&6&-23&7&1&-22使用:

$string='[code]$var=“word”;[/code]';
$codebox=preg\u replace\u回调(“/\[code\]”(.*?\[\/code\]/”,函数($m){
//以下替换只是一个演示
$m[1]=preg_replace(“/”([^“]+)“/”、“$1”、$m[1]);//绿色值
$m[1]=preg\u replace(“/(\$\w+/”,“$1”,$m[1]);//红色变量名
$m[1]=str_replace('=','=',$m[1]);//蓝色=符号
返回$m[1];
},$string);
echo$codebox;
.

使用:

$string='[code]$var=“word”[/code]';
$codebox=preg\u replace\u回调(“/\[code\]”(.*?\[\/code\]/”,函数($m){
//以下替换只是一个演示
$m[1]=preg_replace(“/”([^“]+)“/”、“$1”、$m[1]);//绿色值
$m[1]=preg\u replace(“/(\$\w+/”,“$1”,$m[1]);//红色变量名
$m[1]=str_replace('=','=',$m[1]);//蓝色=符号
返回$m[1];
},$string);
echo$codebox;

.

我想你想要这个功能我想你想要这个很酷的功能。如果我有多个代码,比如
[code]
代码1
[/code]
[code]
代码2
[/code]
。。。它还能工作吗?它应该将每个代码框作为$matches数组中的另一个数组项返回,这样您就可以使用
foreach
对其进行迭代。这很酷。如果我有多个代码,比如
[code]
代码1
[/code]
[code]
代码2
[/code]
。。。它还能工作吗?它应该将每个代码框作为$matches数组中的另一个数组项返回,这样您就可以使用
foreach
对其进行迭代。