我想要替換一個字符,並希望將該字符放在下一個字符後在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