0

str_replace我已经使用这个函数有一段时间了,但这是我第一次在 PHP 的函数上遇到这个奇怪的问题。这是我的代码...

$e2p_perline = explode(',', $e2p_wrd_rplc);

        $e2p_words = array();
        $e2p_words_2b = array();
        $e2p_loopcounter = 0;

        foreach($e2p_perline as $line){

            $e2p_line_words = explode('-', $line);
            $e2p_words[$e2p_loopcounter] = $e2p_line_words[0];
            $e2p_words_2b[$e2p_loopcounter] = $e2p_line_words[1];

            $e2p_loopcounter++;
        }

$e2p_message = str_replace($e2p_words, $e2p_words_2b, $e2p_message);

$e2p_wrd_rplc是使用 wordpress 的 get_option() 函数从数据库加载的字符串。这种格式的字符串数据c*sh-cash, v*gra-viagra, s3x-sex,....

$e2p_words是一个用要替换的词$e2p_words_2b填充的数组,是一个用替换词填充的数组。

假设我们有

e2p_words是 (c*sh, v*agra, s3x)

e2p_words_2b是(现金、伟哥、性)

现在,当我运行它时,只有第一个单词c*sh被替换为cash. 其余e2p_words事件e2p_message保持不变。

我也没有收到任何错误或警告。

4

1 回答 1

2

这对我有用:

<?php

$e2p_words = array("c*sh", "v*agra", "s3x");
$e2p_words_2b = array("cash", "viagra", "sex");

$e2p_message = "Get a v*agra, or you'll have to pay c*sh for some real s3x.";

$e2p_message = str_replace($e2p_words, $e2p_words_2b, $e2p_message);

echo $e2p_message;

?>

输出 :

Get a viagra, or you'll have to pay cash for some real sex.
于 2012-04-25T12:17:19.143 回答