0

我正在尝试将该str_replace()函数与字符串数组一起使用。

我的问题是我的数组中的某些字符串包含另一个字符串。

这是一个例子:

我有一类产品,例如:

$product1 = 'COLLIERPEND';
$product2 = 'COLLIER';

我想将它们全部转换为co.

str_replace(array("COLLIER", "COLLIERPEND"), 'co', $product#);

结果是:

$product1 = 'coPEND';
$product2 = 'co';

我可以更改数组中的顺序,但我的类别太多了。

有没有可以帮助我达到预期结果的功能?

4

2 回答 2

1

看一下基于正则表达式的替换,搜索\bCOLLIER\b替换为 co。这样你就可以在搜索词的每一侧找到词边界,所以你不应该有子词问题。

或者(因为我不完全理解您的问题)按长度对列表进行排序,最长的在前。

http://www.regular-expressions.info/wordboundaries.html

于 2013-06-20T18:35:31.597 回答
1

根据您的代码,您应该将其修改为(首先按较长的字符串列出):

str_replace(array("COLLIERPEND", "COLLIER"), 'co', $product#);
于 2013-06-20T18:40:54.493 回答