2015-04-13 8 views
1

Мне нужно заменить огромное количество слов и фраз длинными строками, слова и фразы могут повторяться несколько раз.Заменить перекрывающиеся строки в php

Я успешно построил массивы preg_replace() и работает почти хорошо. Единственная проблема заключается в том, что список слов и фраз, чтобы заменить я хочу иметь это перекрытие, например:

«кислота» ---> «replacement1»

«свет кислоты» -> «replacement2»

и он принимает жалобу, так как «кислота» находится в обоих, что неудивительно.

Вопрос: Как создать правильную функцию для замены слов и фраз, как в моем сценарии?

+0

Почему вы не используете ['str_replace()'] (http://php.net/str_replace), то? – Darren

+7

Предварительно замените образцы по их длине и примените их вниз? – arkascha

+0

Или используйте границы слов в своем регулярном выражении –

ответ

1

Просто представьте замену рисунков по их длине и примените их вниз. Таким образом, более длинные строки будут заменены первыми. Поэтому любая содержащаяся подстрока там не может быть случайно заменена другими более короткими правилами замены.

+0

Пример был бы хорош;) – hek2mgl

+0

@ hek2mgl пример сортировки чего-то по длине? Давай ... нет кода в вопросе => нет кода в ответе. – arkascha

+0

так или иначе, это должно быть достаточно хорошо. – hek2mgl

Смежные вопросы