是否有可能使用多维数组来使用 str_replace() 和 array() 函数替换字符串中的单词?

Is there a possible way to use multidimensional arrays to replace words in a string using str_replace() and the array() function?

注:我见过this question here,但我的数组完全不同

大家好。我一直在尝试为我的网站制作审查程序。我最终得到的是:

$wordsList = [
    array("frog","sock"),
    array("Nock","crock"),
];

$message = str_replace($wordsList[0], $wordsList[1], "frog frog Nock Nock");
echo $message;

我想做的是使用多维数组将“frog”替换为“sock”,而无需在 str_replace();

中输入所有单词

预期输出:“sock sock crocs crocs”

然而,当我执行它时,出于某种未知原因,它实际上并没有完全替换单词,没有任何错误。我认为这是我犯的一个菜鸟错误,但我已经搜索过但没有找到任何关于使用这样的系统的文档。请帮忙!

您需要更改 wordsList 数组的结构。

有两种结构可以使它变得简单:

作为key/value对

这是我的建议,因为它非常清楚字符串及其替换是什么。

// Store them as key/value pairs with the search and replacement strings
$wordsList = [
    'frog' => 'sock',
    'Nock' => 'crock',
];

$message = str_replace(
    array_keys($wordsList), // Get all keys as the search array
    $wordsList,             // The replacements
    "frog frog Nock Nock"
);

演示:https://3v4l.org/WsUdn

作为多维数组

这需要您以相同的顺序添加 search/replacement 值,当您有几个不同的字符串时,这可能很难阅读。

$wordsList = [
    ['frog', 'Nock'],  // All search strings
    ['sock', 'crock'], // All replacements
];

$message = str_replace(
    $wordsList[0], // All search strings
    $wordsList[1], // The replacements strings
    "frog frog Nock Nock"
);

演示:https://3v4l.org/RQjC6

如果您无法更改原始数组,则创建一个具有正确结构的新数组,因为那样不会“按原样”工作。