我遇到的问题是我需要的数据字符串替换几个变量,例如:str_replace函数和数字
Blah blah S_10 blah S_1 blah blah S_5 blah blah S_15
所以,问题是,当我经历了所有的字符串迭代,该S_1
更换不希望可以代替S_10
和S_15
第3个字符,所以字符串像
Blah blah APPLE0 blah APPLE blah blah ORANGE blah blah APPLE5
什么是解决这个难题的最佳途径?
我遇到的问题是我需要的数据字符串替换几个变量,例如:str_replace函数和数字
Blah blah S_10 blah S_1 blah blah S_5 blah blah S_15
所以,问题是,当我经历了所有的字符串迭代,该S_1
更换不希望可以代替S_10
和S_15
第3个字符,所以字符串像
Blah blah APPLE0 blah APPLE blah blah ORANGE blah blah APPLE5
什么是解决这个难题的最佳途径?
可能不是最好的解决方案,但给出的信息。也许你可以使用字符串替换方法(str_replace),顺序为S_15,S_10,S_5,然后是S_1。这样你就不会发生冲突。
这里,你可以随时使用arrange the search keys by length/value in descending order
str_replace(array('S_15', 'S_10', 'S_1'), array('your replacements'), $string);
与预浸更换提示:
?php
$a = "Blah blah S_10 blah S_1 blah blah S_5 blah blah S_15";
$search = array("/S_1([0-9]+|)/", "/S_5([0-9]+|)/");
$replace = array('APPLE', 'ORANGE');
$a = preg_replace($search, $replace, $a);
echo $a;
?>
而是一次更换一个长期的,发现所有条款并立即更换。您可以使用preg_replace_callback
执行正则表达式搜索和调用一个函数,每场比赛有相应的更换来替换它:
$mapping = array('S_1' => 'APPLE', 'S_2' => 'ORANGE');
$output = preg_replace_callback('/S_\d+/', function ($match) use ($mapping) {
return array_key_exists($match[0], $mapping) ? $mapping[$match[0]] : $match[0];
}, $input);
你可以通过串寻找“S_”当你找到它,你识别数量,并与相应的项目替换它,所以:
<?php
$text = "Blah blah S_10 blah S_1 blah blah S_5 blah blah S_15";
for($i=0;$i<strlen($text);$i++){
if($text[$i] == "S" and $text[$i+1] == "_"){
$j = $i+2;
while($text[$j] != " "){$j++;}
$value = substr($text, $i,$j-1);
$text = substr($text, 0, $i-1)+replace($value)+substr($text, $j);
}
}
?>
,并在功能替代,您想要
这取决于你如何执行更换什么代替S_ * ..你能不能代码? – digEmAll 2012-03-18 10:06:15