如何更换弦中的选定针

时间:2019-01-07 10:50:27

标签: php

我有一个字符串:"[a,b] some text [b,a] and some more"

我还有一个名为$c的值,如果该值等于1,则需要显示如下字符串: "a some text b and some more"(选择[x,y](x)的第一部分)

我尝试使用str_replace来做到这一点,但这似乎不起作用。

您能提供一个解决方案吗?

2 个答案:

答案 0 :(得分:1)

您可以使用$c变量来更改对preg_replace的调用的替换字符串,例如:

$string = "[a,b] some text [b,a] and some more";
$c = 1;
echo preg_replace('/\[([^,]+),([^]]+)\]/', $c ? '$1' : '$2', $string) . "\n";
$c = 0;
echo preg_replace('/\[([^,]+),([^]]+)\]/', $c ? '$1' : '$2', $string) . "\n";

正则表达式查找[,后跟一定数量的非,字符(组1),,,然后再寻找一定数量的非]字符(第2组)和一个]。取决于$c的值,将匹配的文本替换为第1组或第2组。

输出:

a some text b and some more 
b some text a and some more

Demo on 3v4l.org

答案 1 :(得分:0)

我对一个theard中的子字符串做了处理,您也可以在您的情况下使用此解决方案。