Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 搜索字符串并用数组替换单词';s值_Php_Arrays_String - Fatal编程技术网

Php 搜索字符串并用数组替换单词';s值

Php 搜索字符串并用数组替换单词';s值,php,arrays,string,Php,Arrays,String,其思想是在字符串中搜索特定的单词,并根据特定的数组将它们转换为其他单词。让我告诉你我的意思 $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";      
比如说,
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;
我知道这是可行的,但有没有一种简单的方法让我觉得整个事情复杂化了。如果我很好,它是否可能会导致问题,如果我有大字符串,或者花时间处理它

可能提供搜索词的
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);
?>

问题是您选择将单词和替换项作为键和值放在一个数组中。更简单的方法是使用2个索引数组

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

$result = str_replace( $words, $replacements, $yourString );
这样,您就不必使用
array\u键
隐式创建新数组

如果您绝对希望将搜索/替换存储在关联数组中,在这种情况下,不要使用
str\u replace
strtrtr

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

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

$filtered = strtr($string, $swears);