2016-04-20 6 views
0

Как я могу использовать preg_replace PHP, чтобы заменить все вхождения строки в тексте для тех, кто нашел внутри HTML, кроме вот Тег т.е. остальныеИспользование preg_replace PHP, чтобы заменить все вхождения строки, кроме

, например, Я хочу заменить слово со словом синий.

 
**Original text**: 
    Tim's favorite color is color. 
    Color is also Bill's favorite. 
 
**Converted text**: 
    Tim's favorite color is blue. 
    Blue is also Bill's favorite. 
+4

Простой: нет. regexes и html не играют вместе красиво. Используйте парсер DOM. –

+1

Zalgo - Тони пони, он приходит. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – ceejayoz

ответ

0

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

Так, используя свой пример:

**Original text**: 
    Tim's favorite [color] is color. 
    Color is also Bill's favorite. 

**Interim step text**: 
    Tim's favorite [blue] is blue. 
    Blue is also Bill's favorite. 

**Converted text**: 
    Tim's favorite [color] is blue. 
    Blue is also Bill's favorite. 

Проблемы вы столкнетесь с этим методом:

  1. Будучи контекст так что вы заглаживаете замененное слово во втором сообщении. (Ваше описание проблемы не покрывало это, но пример сделал)
  2. Признавая все ссылки, независимо от структуры с помощью регулярного выражения

Как таковой я не включает в себя какой-либо код, но я надеюсь, что это ставит вас на правильном пути.

+0

Еще одна проблема, с которой вы столкнетесь, заключается в том, что сама ссылка содержит слово. – Nullsig

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