DataCleaner.inc.php:<?php
namespace DataCleaner; class Clean {
function RemoveProfanity($text) {
$badwords = array(
"idiotic" => "shortsighted",
"moronic" => "unreasonable",
"insane" => "illogical"
 );

// Remove bad words
foreach ($badwords as $key => $value) {
if (strpos($text, $key) !== false)
return str_replace($key, $value, $text);
}
}
}
?>Library.inc.php:<?php
namespace Library; class Clean {
function FilterTitle($text) {
// Trim white space and capitalize first word
return ucfirst(trim($text));
}
}
?>
index.php:<?php
include "DataCleaner.inc.php";
include "Library.inc.php";

$data = new DataCleaner\Clean();
$library = new Library\Clean();

$title = "the moronic sun also rises idiotic insane";

printf("Title before filters: %s<br />", $title);

$title = $data->RemoveProfanity($title);
printf("Title after Data::Clean: %s<br />", $title);

$title = $library->FilterTitle($title);
printf("Title after Library::Clean: %s<br />", $title);
?>输出:
Title before filters: the moronic sun also rises idiotic insane
Title after Data::Clean: the moronic sun also rises shortsighted insane
Title after Library::Clean: The moronic sun also rises shortsighted insane
怎么实现把所有的
"idiotic" => "shortsighted",
"moronic" => "unreasonable",
"insane" => "illogical"
这些词都替换成相应的单词??

解决方案 »

  1.   

                foreach ($badwords as $key => $value) {
                    if (strpos($text, $key) !== false)
                        return str_replace($key, $value, $text);
                }
    =================修改为
    return  strtr($text, $badwords);
      

  2.   


    不行,输出错误:
    Title before filters: the moronic sun also rises idiotic insaneWarning: strstr(): needle is not a string or an integer in D:\xampp\htdocs\Project\DataCleaner.inc.php on line 16
    Title after Data::Clean: 
    Title after Library::Clean: