|
|
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Есть страничка Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. нужно вырезать все теги между Код: html 1. Т.е. должно получится так Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Помогите пожалуйста с регулярным выражением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2012, 11:52 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Varo, Для этой цели лучше всего подойдет strip_tags. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2012, 13:39 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
phpz, Функция удаления тегов данном случае - не подходит. По крайней мере в одиночном использовании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2012, 13:43 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
preg_replace_callback в помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2012, 13:57 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Hett, Это как раз то что нужно, но вот только у меня не получается составить правильное регулярное выражение, все ломается на первом </p> По этому и прошу помощи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2012, 14:20 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
хотя регуляркой тут сложновато, возможно, будет, лучше юзать парсеры HTML ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2012, 14:22 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Самому теперь интересно, по крайней мере у меня не получилось это сделать с помощью DOMDocument, т.к. он не правильно понимает вложенные теги P, потому что внутри тега P не может содержаться блочных тегов, коим он сами и является. Где вы взяли такой не валидный HTML ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2012, 14:47 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Если окаймить <p class="text"> <div>-ами, то получается. А так, действительно надо исправлять HTML-код. <script type="text/javascript"> $(document).ready(function() { $('.text').each(function() { $(this).parent().html('<p class="text">'+$(this).parent().text()+'</p>') });alert($('.text').parent().parent().html()); }); </script> <body> <div> <p class="text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. <p>Cras vestibulum tempor leo auctor placerat.</p> <p>Ut vel ipsum enim.</p> Nam ac neque enim. <b>Pellentesque enim diam, fermentum commodo aliquet in, venenatis non quam.</b> Praesent dictum accumsan nulla, ac rutrum ipsum pharetra eu. Donec aliquam, risus a volutpat rutrum, nunc purus mattis leo, eget feugiat odio elit non diam. </p> </div> <div> <p class="text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. <p>Cras vestibulum tempor leo auctor placerat.</p> <p>Ut vel ipsum enim.</p> Nam ac neque enim. <b>Pellentesque enim diam, fermentum commodo aliquet in, venenatis non quam.</b> Praesent dictum accumsan nulla, ac rutrum ipsum pharetra eu. Donec aliquam, risus a volutpat rutrum, nunc purus mattis leo, eget feugiat odio elit non diam. </p> </div> </body> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2012, 15:57 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
VaroПомогите пожалуйста с регулярным выражением У вас произвольная вложенность. Почитайтедля чего регулярки существуют и для чего их не стоит за уши притягивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2012, 16:00 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
чтоб не создавать еще одну тему помогите Код: php 1. 2. 3. 4. 5. 6. 7. Хочу вырезать 1011620007288 и дату 21.10.2011. Но не могу создать регулярку :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2012, 17:46 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
HettСамому теперь интересно, по крайней мере у меня не получилось это сделать с помощью DOMDocument, т.к. он не правильно понимает вложенные теги P, потому что внутри тега P не может содержаться блочных тегов, коим он сами и является. Где вы взяли такой не валидный HTML ?А так, действительно надо исправлять HTML-код. Не имею возможности управлять кодом. Hett, вот именно по этому, я уже 3й день ломаю голову над этого простой с виду головоломкой -) Почитайтедля чего регулярки существуют и для чего их не стоит за уши притягивать. И вам хорошего дня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2012, 10:34 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
регулякачтоб не создавать еще одну тему помогите Код: php 1. 2. 3. 4. 5. 6. 7. Хочу вырезать 1011620007288 и дату 21.10.2011. Но не могу создать регулярку :( Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2012, 10:38 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
авторHett, вот именно по этому Может наивно, но что это означает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2012, 13:02 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
я хз, просто придумал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2012, 14:30 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Varo, конкретно для первого примера ([13617842]) можно использовать такую схему: 1) разбить текст - $arr = explode('<p class="text">', $str); 2) почистить массив - foreach ($arr as $key => &$value) $value = strip_tags($value); 3) добавить элементам массива любые окаймляющие тэги (хоть те же <p class="text">)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2012, 18:54 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Я ниче не понял, но почему-то мне кажется вы так вообще все тэги поудаляете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2012, 20:07 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Если HTML гарантированно корректен и если иных особенностей нет, т.е. задача строго : разбить на p-эшки, у которых класс text и вернуть содержимое этих p-эшек То начало в принципе подходит: Код: php 1. Ну а дальше не надо ничего стрипать, просто убрать лишнее, т.е. закрывающие </p> в конце строк. И всё. Но решение грязное и чувствительное, т.е. черновое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2012, 21:30 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Достаточно в каком-то из <p class="text"> добавить лишних пробелов и explode нас разочарует :) Но если разбивать регуляркой, то уже будет живучее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2012, 21:32 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Не подходит для XHTML, и если уж HTML и валидный, то лучше все сделать с помощью DOMDocument ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 07:39 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Чтоб не плодить тем, подскажите как регулярным выбрать из шаблона key1 "" "string1 " "string2 " key2 "" Все что между key1"" ---- key2"" то есть выбрать строчки. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 13:18 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
и как выбрать отдельно строки 1 и 2 из такого шаблона, ну тоесть результат 1 = строка 1 + строка 2; результат 2 - строка 1; результат 3 = строка 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 13:22 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Hett, естественно, поудаляю. И получу голые данные. Которые потом можно обрамлять в любые нужные тэги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 14:48 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
stopkranHett, естественно, поудаляю. И получу голые данные. Которые потом можно обрамлять в любые нужные тэги. все теги можно и без цикла удалить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 18:48 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Hett, без цикла это будут не массив данных а строка . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2012, 11:33 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Ок, напишите рабочий вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2012, 11:49 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
интересно посмотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2012, 11:49 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
stopkranконкретно для первого примера ([13617842]) можно использовать такую схему... Вариант, заточенный под определенный текст, это конечно хорошо, но думаю решение должно быть более универсальным, чтобы не переписывать код после каждого изменения во входящих данных. След. код можно (и нужно) оптимизировать, но невалидный html-код он кушает и с поставленной задачей справляется. код Код: php 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2012, 00:08 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
VaroЕсть страничка + Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. нужно вырезать все теги между Код: html 1. Т.е. должно получится так + Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Помогите пожалуйста с регулярным выражением Сделал на базе preg_replace_callback Код: php 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2012, 14:05 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Hett, ну, вот, например, вариант с тупым explode: http://ir2.ru/explode.php В этом варианте одно допущение - предполагается, что на странице нет ничего, кроме существенных элементов (<p class="text">...</p>). phpz, слишком много букв. Vaytl, это норм. вариант, можно сказать, классика. Но в нём тоже есть допущение: \n (всё держится на обязательном переносе строки перед существенным закрывающем тэгом </p>). Решить, какое из допущений надёжнее, может только хозяин проблемы. Можно придумать, наверное, и другие варианты, зная точно, какие ограничения налагаются на исходный вакуум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2012, 15:54 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
stopkran, Как же без букафф-то, чтоб код не править ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2012, 18:16 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
VaytlСделал на базе preg_replace_callback Код: php 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. stopkran...Хм ) Работает, но только для данного примера, в реальности это страница с кучей тегов и текста, так что используя ваш вариант - туда попадет мусор, ну а так - работает :) phpz...В "Боевом" режиме отработал неправильно, почему, разбираться не стал, логика слишком накручена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2012, 12:42 |
|
||
|
[PHP] Регулярка
|
|||
|---|---|---|---|
|
#18+
Varo, если подходить "универсально", задача кажется неразрешимой. Теоретически должен бы сработать DOM, но, если будут какие попало (закрытые-незакрытые) тэги <p>, мы никаким способом не сможем точно выделить элемент именно с классом "text". Я бы всё-таки копал в сторону "меток": что окружает нужные фрагменты текста? В конце это м.б. какой-нибудь счётчик, в начале - меню или ещё что-то устойчиво повторяющееся на каждой странице. Ну, или на группе страниц. Я именно так когда-то скачивал и парсил Малый Академический Словарь русского языка, терпеливо, по одной букве... Ну, а как вы хотите - за всё надо платить (хотя бы своим трудом и временем)! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2012, 18:00 |
|
||
|
|

start [/forum/topic.php?all=1&fid=23&tid=1464296]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 496ms |

| 0 / 0 |
