日期:2014-05-17  浏览次数:20620 次

命名空间中如何实现全部单词替换
DataCleaner.inc.php:
PHP code

<?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 code

<?php
    namespace Library;

    class Clean {
        function FilterTitle($text) {
            // Trim white space and capitalize first word
            return ucfirst(trim($text));
        }
    }
?>





index.php:
PHP code

<?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"
这些词都替换成相应的单词??

------解决方案--------------------
foreach ($badwords as $key => $value) {
if (strpos($text, $key) !== false)
return str_replace($key, $value, $text);
}
=================

修改为
return strtr($text, $badwords);