【发布时间】:2026-01-24 15:30:01
【问题描述】:
我想使用几个条件来更改字符串(在 PHP 中)来定义应该进行哪些更改,更新字符串并不断更改更新后的字符串。
例如,从一个字符串开始并根据一个条件,对字符进行更改,然后使用字符串的第二个版本,然后根据另一个条件,再进行一些更改,依此类推,在这样的这样,在流程结束时,更改是累积的。
显然,变量范围阻止了以下方法:
$newstring = "This is a test string";
$value[] // This is an array already defined.
for ($i = 0; $i<=count($value); $i++) {
switch ($value[$i]) {
case -1:
$newstring = preg_replace(// do something with $newstring);
break;
case 0:
$newstring = preg_replace ( // do something else with $newstring);
break;
case 1:
$newstring = substr_replace(//do something else with $newstring);
break;
}
}
有没有办法做到这一点?
提前致谢。
更新:这是我的代码。如您所料,$_POST['text1'] 是一个字符串,$_POST['array'] 是一个二维数组。
$text1 = $_POST['text1'];
$value = $_POST['array'];
for ($i = 0; $i<=count($value); $i++) {
switch ($value[$i][0]) {
case -1:
$newstring = preg_replace("/".$value[$i][1]."/","",$text1,1);
break;
case 0:
break;
case 1:
$newstring = substr_replace($text1, $value[$i][1],$value[$i][2],0);
break;
}
}
【问题讨论】:
-
你得到什么错误?你怎么知道它与变量作用域有关?
-
我认为你的意思是 //用 $newstring 做一些事情。我不认为这是一个变量范围的问题..
-
@Jeremiah:好吧,我没有收到错误。我得到了 switch 语句所做的最后一个更改,这只是一个更改,而不是应用于字符串的几个更改。
-
@amitchd:对。最后一刻改变。我会改正的。
-
@Robert:就像@amitchd 所说的那样,您确定在每个替换中都使用
$newstring而不是$string?
标签: php string switch-statement