|
|
|
(PHP) Регулярное выражение. Проблема с экранированием кавычек в строках.
|
|||
|---|---|---|---|
|
#18+
Задача: Требуется у всех картинок в тексте вырезать http://hostname в атрибуте SRC перед вставкой/обновлением в бд. Суть в проблемы заключается в том, что для поиска проэкранированных открывающих и закрывающих одинарных/двойных кавычек соответствуют разные подмаски (3, 6). Подробнее см. рег. Никак не могу понять логику обработки строк в данном контесте. На примере двойной кавычки (")... По логике вещей для нахождения экрана достаточно \\", т.к. " не является спец. символом в регулярном выражении. Что касается закрывающей двойной кавычки, то все корректно. Но для поиска открывающей соответствует подмаска \\\"... (тут я в замешательстве) Аналогичная ситуация с одинарными. Вот что получилось: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Подскажите, в чем может быть объяснение данной ситуации. :) Перечитал уже мануал вдоль и поперек, но никак не вижу логики. PHP 4.3.10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 11:36 |
|
||
|
(PHP) Регулярное выражение. Проблема с экранированием кавычек в строках.
|
|||
|---|---|---|---|
|
#18+
Я честно не понял в чем проблема) Но почему бы не экранировать после того, как уберешь ненужные куски, например: Код: plaintext 1. 2. www.free-lancer.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 12:55 |
|
||
|
(PHP) Регулярное выражение. Проблема с экранированием кавычек в строках.
|
|||
|---|---|---|---|
|
#18+
VERS , спасибо! Твой вариант более изящный! :) Кое-что подправил и стало нормально: Код: plaintext 1. 2. VERSЯ честно не понял в чем проблема) Старался объяснить как можно понятнее... :) Попытаюсь еще раз. Текст паттерна у нас заключен в одинарные кавычки. Следовательно, чтобы найти " или ' надо записать " и \' соотвественно. Затем, ищем экраны перед самими кавычками - это \\" (для двойных) и \\\' (для одинарных), т.к. сначала паттерн парсится как строка, а потом как рег. выражение. Вроде бы все верно. Но! Для нахождения открывающих и закрывающих кавычек соотвествуют различные шаблоны! ... ??? Другими словами, чтобы найти открывающую кавычку следует использовать шаблоны \\\\\' или \\\". Где здесь логика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 15:18 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=33600904&tid=1476574]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
172ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 448ms |

| 0 / 0 |
