0

アイデアは、特定の単語の文字列を検索し、特定の配列に従ってそれらを別のものに変更することです。私の言いたいことをお見せしましょう。

$string = "hello buddy, I'm your friend or maybe a fellow";      

はののしりとしましょうfriends。この言葉を好きな言葉に変えたい。だから私はこれを作った:

$swears = array(
"friend" => "fri**d",
"buddy"  => "bu**y",
"fellow" => "fe**ow"
);

配列のキーに従って文字列を検索し、その値に置き換えたいと思います。私が得たのは、配列キーに従って配列内の値を置き換えることだけです。だから試した後、私はこれを思いついた:

$string = "hello buddy, I'm your friend or maybe a fellow";  

$swears = array(
"friend" => "fri**d",
"buddy"  => "bu**y",
"fellow" => "fe**ow"
);

$foreach  = $string; 
foreach($swears as $bad => $good){
$foreach       = str_replace($bad,$good,$foreach);
$filtered =  $foreach;
 }
echo $filtered;

私はそれが機能することを知っていますが、全体が複雑になったと感じる簡単な方法はありますか. 私がよければ、大きな文字列を持っていたり、処理に時間がかかったりすると、問題が発生する可能性がありますか?

4

2 に答える 2

9

str_replacearray検索語とarray置換語が提供される場合があります。

<?php
$string = "hello buddy, I'm your friend or maybe a fellow";

$swears = array(
    "friend" => "fri**d",
    "buddy"  => "bu**y",
    "fellow" => "fe**ow"
);

echo str_replace(array_keys($swears), array_values($swears), $string);
?>

ショー:

hello bu**y, I'm your fri**d or maybe a fe**ow
于 2013-04-18T04:14:17.150 に答える
1

問題は、単語と置換をキーと値として 1 つの配列に入れることを選択することです。より簡単な方法は、2 つのインデックス付き配列を使用することです。

$words = array( 'friend', 'buddy', 'fellow' );
$replacements = array( 'fri**nd', 'bu**dy', 'fe**ow' );

$result = str_replace( $words, $replacements, $yourString );

この方法では、 を使用して暗黙的に新しい配列を作成する必要はありませんarray_keys

検索/置換を連想配列に絶対に保存したい場合は、この場合は使用しないでstr_replaceくださいstrtr

$swears = array(
    "friend" => "fri**d",
    "buddy"  => "bu**y",
    "fellow" => "fe**ow"
);

$filtered = strtr($string, $swears);
于 2013-04-18T04:33:18.140 に答える