我们的想法是在字符串中搜索某些单词,然后根据特定的数组将其更改为其他单词。让我告诉你我的意思。
$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;
我知道它有效,但有一种简单的方法我觉得我把整个事情弄复杂了。如果我很好,是否有可能导致问题,如果我有大字符串,或需要时间来处理它。
答案 0 :(得分:9)
str_replace
可能会提供array
个搜索词和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
答案 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);