我有一个字符串:
$text = 'Hello this is my string and texts';
我在数组中有一些不允许的字:
$filtered_words = array(
'string',
'text'
);
我想用$text
替换***
中所有已过滤的字词,所以我写道:
$text_array = explode(' ', $text);
foreach($text_array as $key => $value){
if(in_array($text_array[$key], $filtered_words)){
$text = str_replace($text_array[$key], '***', $text);
}
}
echo $text;
输出:
Hello this is my *** and texts
但我需要将texts
替换为***
,因为它还包含过滤后的单词(文本)。
我怎么能做到这一点?
由于
答案 0 :(得分:10)
您可以立即执行此操作,str_replace
支持从数组替换为单个字符串:
$text = 'Hello this is my string and texts';
$filtered_words = array(
'string',
'texts',
'text',
);
$zap = '***';
$filtered_text = str_replace($filtered_words, $zap, $text);
echo $filtered_text;
输出(Demo):
Hello this is my *** and ***
请注意,首先要记住最大的单词,并且在str_replace
处于该模式时请记住,它会在另一个之后进行一次替换 - 就像在循环中一样。所以较短的单词 - 如果更早 - 可以成为较大单词的一部分。
如果您需要更多安全保障,您必须先考虑进行文本分析。这也可以告诉你,如果你不知道你可能想要替换的单词,但到目前为止你还没想过。
答案 1 :(得分:2)
str_replace可以接受数组作为第一个参数。因此根本不需要任何for each
循环:
$filtered_words = array(
'string',
'text'
);
$text = str_replace($filtered_words, '***', $text);