2013-06-20 3 views
0

Я пытаюсь использовать функцию str_replace() с массивом строк.Строка str_replace и аналогичная строка

Моя проблема в том, что некоторые строки в моем массиве содержат другую строку.

Вот пример:

У меня есть категория продуктов, таких как:

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

И я хочу, чтобы превратить их всех в co.

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

Результат:

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

Я мог бы просто изменить порядок в массиве, но у меня слишком много категорий.

Есть ли функция, которая могла бы помочь мне достичь желаемого результата?

ответ

1

Взгляните на regular expression based replacements, ищите \bCOLLIER\b для замены на co. Таким образом, вы обнаруживаете границы слов на каждой стороне слова поиска, поэтому у вас не должно быть проблем со словом.

Альтернативно (так как я не совсем понимаю вашу проблему) сортируйте свой список по длине, с наибольшей длиной.

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

+0

Я был напуган о длине сортировки из числа различных строк, но это сработало. благодаря – FLX

1

на основе кода, вы должны пересмотреть его (список его длинной строки первой):

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