我需要用逗号替换一个简单的文本到数字。
CSV File:
Test1
Test1, Test2
Test1, Test2, Test3
php code
$text = "Test1";
$text1 = "Test1, Test2";
$text1 = "Test1, Test2, Test3";
$search = array('$text','$text1','$text2');
$replace = array('10','11','12');
$result = str_replace($search, $replace, $file);
echo "$result";
结果是:“10”,“10,11”,“10,11,12”
但我想得到“10”,“11”,“12”。
这是最终的剧本,但其中一个是“10,12”
$text1 = "Test1";
$text2 = "Test2";
$text3 = "Test3";
$text4 = "Test1, Test2, Test3";
$text5 = "Test1, Test2";
$text6 = "Test1, Test3";
$text7 = "Test2, Test3";
$text8 = "Blank";
array($text8,$text7,$text6,$text5,$text4,$text3,$text2,$text1);
array('10','11','12','13','14','15','16','17');
答案 0 :(得分:1)
您可能不希望拥有这些字符串文字:
$search = array('$text','$text1','$text2');
尝试
$search = array($text,$text1,$text2);
使用单引号时,不会解析变量,所以
$text1 = 'Hello';
$text2 = '$text1';
echo $text2; // $text1
Vs的
$text1 = 'Hello';
$text2 = $text1;
echo $text2; // Hello
结果来自:
Test1
Test1, Test2
Test1, Test2, Test3
将Test1的每个实例替换为10,依此类推 - 所以:
10
10, 11
10, 11, 12
更新
我明白你要做什么。当您将数组传递到str_replace
时,它会按顺序处理它们 - 所以当它查找Test1, Test2
时,您已经用10替换了Test1
。反转顺序以执行您想要的操作。
$text = "Test1";
$text1 = "Test1, Test2";
$text2 = "Test1, Test2, Test3";
$search = array($text2,$text1,$text); // reversed
$replace = array('12', '11', '10');// reversed
$result = str_replace($search, $replace, $file);
echo $result;