I'm trying to use the str_replace() function with an array of strings.

My problem is that some strings in my array contains another string.

Here is an example:

I have a category of products such as:

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

And I want to transform all of them into co.

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

The result is:

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

I could just change the order in the array, but I have too many categories.

Is there a function that could help me achieve the desired result?

有帮助吗?

解决方案

Take a look at the regular expression based replacements, search for \bCOLLIER\b to replace with co. That way you're finding word boundaries on each side of the search word, so you shouldn't have sub-word issues.

Alternately (since I don't fully understand your problem) sort your list by length, longest first.

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

其他提示

Based on your code, you should revise it to (list it by longer string first):

str_replace(array("COLLIERPEND", "COLLIER"), 'co', $product#);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top