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
对其进行迭代。