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_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
于 2013-04-18T04:14:17.150 回答
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 回答