我想要替换一个字符,并希望将该字符放在下一个字符后在PHP中。 例如:将字符替换为字符串中的下一个字符。
<?php
$exa = array("R" => "r", "A" => "a", "V" => "v", "I" => "i");
echo strtr("RAVI", $exa);
?> //displays "ravi" ok
我想更换 “V” 与 “V”,然后希望把它 “I” 之后。 是这样的:“raiv”
我想要替换一个字符,并希望将该字符放在下一个字符后在PHP中。 例如:将字符替换为字符串中的下一个字符。
<?php
$exa = array("R" => "r", "A" => "a", "V" => "v", "I" => "i");
echo strtr("RAVI", $exa);
?> //displays "ravi" ok
我想更换 “V” 与 “V”,然后希望把它 “I” 之后。 是这样的:“raiv”
我认为这个解决方案你可能感兴趣的:
功能
function replaceAndMove($text, $replacements) {
$from = array_keys($replacements);
$to = array_values($replacements);
function fixFrom($s) {
return '/' . preg_quote($s, '/') . '(.|$)' . '/';
}
function fixTo($s) {
return '${1}' . $s;
}
$from_ready = array_map('fixFrom', $from);
$to_ready = array_map('fixTo', $to);
return preg_replace($from_ready, $to_ready, $text);
}
测试用例
$text = "abcdXefghXijklX----aFb~~~cMd";
$replacements = array(
'X' => 'x',
'F' => 'f',
'M' => 'm',
);
echo $text . '<br>';
echo replaceAndMove($text, $replacements);
输出
abcdXefghXijklX----aFb~~~cMd
abcdexfghixjkl-x---abf~~~cdm
编辑:修复了正则表达式,特殊字符等。或]
是的,这是我想要的。 –
@Ravikant当我回答时,这并不安全。它现在(编辑) - 甚至应该处理在正则表达式中有特殊含义的字符。 – MightyPork
该死的又一个bug。我希望这个新的编辑效果很好。如果不是,我会尽力帮助。 – MightyPork
首先做str_replace,然后用strlen,substr和字符串的索引替换最后2个点,如果这是你正在做的事情。因为你可以访问一个字符串像一个阵列中的每个字符$ T [1] == e如果字符串是“测试”
如果你有几个“设置”模式,你可能只是这样做:
$find = array('RAVI',...,so on);
$replace = array('raiv',..., so on);
$input = 'RAVI';
echo str_replace($find, $replace, $input);
只需将更多组对添加到阵列中即可获得更多替换...如果这就是您想要的。
请举例:) –
不,不是。他显然想要做其他的字符串,而不仅仅是这个例子。 – MightyPork
您正在寻找这样的事情:
<?php
$string = "RAVIVL";
$replace_char = "v";
$string = strtolower($string);
$pos = array_keys(array_intersect(str_split($string),array($replace_char)));
foreach ($pos as $p) {
if (isset($string[$p+1])) {
$string[$p] = $string[$p+1];
$string[$p+1] = $replace_char;
}
}
echo $string;
?>
互换所有出现○“V”用下面这封信。
$ string =“RAVIVP”;显示“raivvp”而不是“raivpv” –
请问这有什么实际用途? – MightyPork
它的字体转换器。 –
这并没有真正解释目的。有什么搞乱字符串来处理字体? – MightyPork