char を置き換えて、その文字を php の次の char の直後に置きたい。例えば:
<?php
$exa = array("R" => "r", "A" => "a", "V" => "v", "I" => "i");
echo strtr("RAVI", $exa);
?> //displays "ravi" ok
「V」を「v」に置き換えて、「I」の後に置きたい。このように:「raiv」
char を置き換えて、その文字を php の次の char の直後に置きたい。例えば:
<?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
編集: などの正規表現特殊文字の問題を修正しました。また ]
最初に str_replace を実行してから、strlen、substr、および文字列のインデックスを使用して、最後の 2 つのスポットを置き換えようとしている場合。文字列ごとに配列のような文字列にアクセスできるので、文字列が「test」だったら $t[1] == e
いくつかの「セット」パターンがある場合は、次のようにすることができます。
$find = array('RAVI',...,so on);
$replace = array('raiv',..., so on);
$input = 'RAVI';
echo str_replace($find, $replace, $input);
より多くの置換のために配列にセットペアを追加するだけです...それがあなたが望むすべてなら。
あなたはこのようなものを探しています:
<?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;
?>
すべてのオカレンス o "v" を次の文字と交換します。