配列を使用するときにPHP function str_replace
]で問題が発生しています。
このメッセージがあります:
$message = strtolower("L rzzo rwldd ty esp mtdsza'd szdepw ty esp opgtw'd dple");
そして、私はstr_replace
を次のように使用しようとしています:
$new_message = str_replace(
array('l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k'),
array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'),
$message);
結果はA good glass in the bishop's hostel in the devil's seat
になりますが、代わりにp voos vlpss xn twt qxswop's wosttl xn twt stvxl's stpt
が返されます。
ただし、2文字だけを置き換えようとすると、うまく置き換えられます。
$new_message = str_replace(array('l','p'), array('a','e'), $message);
l
とp
の文字は、a
とe
に置き換えられます。
両方が完全に同じサイズである場合、完全なアルファベット配列で動作しないのはなぜですか?
str_replace
配列では、すべての置換を順番に実行します。代わりに strtr
を使用して、一度にすべてを実行します。
$new_message = strtr($message, 'lmnopq...', 'abcdef...');
Str_replace()は左から右に置換するため、複数の置換を行うときに以前に挿入された値を置換する場合があります。
// AがBに置き換えられ、次にBがCに置き換えられるため、Fを出力します。.. //左から右への置き換えにより、最後にEがFに置き換えられます。 $ search = array( 'A'、 'B'、 'C'、 'D'、 'E'); $ replace = array( 'B'、 'C'、 ' D '、' E '、' F '); $ subject =' A '; echo str_replace($ search、$ replace、$ subject);
str_replace
より簡単で優れています:
<?php
$arr = array(
"http://" => "http://www.",
"w" => "W",
"d" => "D");
$Word = "http://desiweb.ir";
echo strtr($Word,$arr);
?>
strtr
PHP dochere
正解としてマークされた答えの代わりに、文字の代わりに単語を置き換える必要がある場合は、次のコードでそれを行うことができます:
$query = "INSERT INTO my_table VALUES (?, ?, ?, ?);";
$values = Array("Apple", "oranges", "mangos", "papayas");
foreach (array_fill(0, count($values), '?') as $key => $wildcard) {
$query = substr_replace($query, '"'.$values[$key].'"', strpos($query, $wildcard), strlen($wildcard));
}
echo $query;
デモはこちら: http://sandbox.onlinephpfunctions.com/code/56de88aef7eece3d199d57a863974b84a7224fd7