PHP脚本中的多个foreach语句

时间:2010-10-29 18:40:14

标签: php

这是我目前的代码:

foreach ($swears as $bad_word)
$body = str_ireplace($bad_word, "", $body);

它正在过滤坏词,但我还要将“:”过滤为正文中的“ - ”。如何在脚本中包含多个foreach语句?

6 个答案:

答案 0 :(得分:3)

把它们放在一起吗?

例如:

foreach($swears as $bad_word)
    $body = str_ireplace($bad_word, '', $body);

$replace_chars = array(
    ':' => '-',
    '?' => '!');
foreach($replace_chars as $char => $rep)
    $body = str_replace($char, $rep, $body);

如果您只想要替换一个额外的字符,只需在str_replace()之外再次使用foreach(),而不是使用$replace_chars数组和第二个foreach() {1}}。

答案 1 :(得分:3)

使用大括号?

foreach( $swears as $bad_word )
{
  $body = str_ireplace($bad_word, "", $body);
  $body = str_ireplace(":", "-", $body);
}

或str_ireplace中的数组:

foreach( $swears as $bad_word )
  $body = str_ireplace(array(":", $bad_word), array("-", ""), $body);

答案 2 :(得分:1)

答案 3 :(得分:1)

所有回复都很糟糕。你不需要foreach循环。以下是应该的完成方式:

 $filter = array(
    ':'      => '-',
    'badword'    => '',
    'anotherbad' => ''
);
$body = str_ireplace(array_keys($filter), $filter, $body);

答案 4 :(得分:0)

我不明白为什么你需要另外foreach

foreach ($swears as $bad_word)
    $body = str_ireplace($bad_word, "", $body);

$body = str_replace(":", "-", $body);

但如果你这样做,没有什么可以阻止你再拥有另一个。

答案 5 :(得分:0)

您可以在stri_replace

中使用数组
$body = str_ireplace($bad_words, '', $body);
$body = str_replace(':', '-', $body);

使用单个替换执行此操作的另一种方法,如果您有更多的过滤器数组(可以使用array_merge添加更多替换),这种方法很有效。

$filters = $bad_words;
$replacements = array_fill(0, count($bad_words), '');

$filters[] = ':';
$replacements[] = '-';

$body = str_ireplace($filters, $replacements, $body);