5 / 5 / 2
Регистрация: 04.07.2010
Сообщений: 200
|
||||||
1 | ||||||
Получение текста, обрамленного тегами28.07.2013, 21:27. Показов 1411. Ответов 7
Метки нет (Все метки)
Как получить текст который обрамлен тегами.Например выцепить "Знак"(Ниже в примере)
Есть ли готовые парсеры или хотя бы верный способ против всех бед(нет текста в заголовке, как то не так оформлен, ошибка в синтаксисе то есть кавычек забыли поставить и т.п.) Пример
0
|
28.07.2013, 21:27 | |
Ответы с готовыми решениями:
7
Работа с тегами в текста поиск текста в файлах php между тегами Найти текст между тегами и создать файлы из этого текста Получение текста страницы |
19 / 19 / 3
Регистрация: 26.07.2013
Сообщений: 61
|
|
28.07.2013, 22:32 | 2 |
мне кажется, самый простой способ- воспользоваться командой "strip_tags"
0
|
5 / 5 / 2
Регистрация: 04.07.2010
Сообщений: 200
|
|
28.07.2013, 23:03 [ТС] | 3 |
rus_dao, ну неплохо но
1
|
19 / 19 / 3
Регистрация: 26.07.2013
Сообщений: 61
|
|
28.07.2013, 23:19 | 4 |
"частичные или сломанные теги" это достаточно редкое явление. но мне приходилось пару раз писать специальные регулярки на незакрытый тег и прочую глупость. просто проверять надо всегда валидность своего кода.
0
|
28.07.2013, 23:33 | 5 | |||||
скажите, что должно получиться в результате парсинга такой строки:
0
|
KOPOJI
|
29.07.2013, 00:14
#6
|
1
|
5 / 5 / 2
Регистрация: 04.07.2010
Сообщений: 200
|
|
29.07.2013, 01:24 [ТС] | 7 |
ну давайте к делу)). У меня тут куча таблиц и лишних хр.ней кое где классы левые, кое где надо привернуть классы.
Ну не верю я что нет готовых парсеров для вставки или удадления тегов, классов, ссылок и т.п. Добавлено через 1 минуту я конечно кое что сделал что срочно было. через функции по работе с текстом. Но не покидает ощущение велосепедостроения Добавлено через 7 минут ага , если бы мой код был бы, а сооружать что то будет отправлять код на проверку валидности.. мне кажется не таким и легким. Хотя если вы можете предложить вариант?
0
|
29.07.2013, 08:26 | 8 | ||||||||||
ну хорошо, если данные свои -- это уже совсем другая задача. тогда пример можно упростить, но! вы сказали "незакрытые теги" и "незакрытые аттрибуты". ну вы сами понимаете, что даже браузеры такую страницу отрендерить могут по-разному? Вы хотите сделать получше, чем все эти гугли, мозиллы, майкрософты, эпплы?
Ну хорошо, допустим, возможность есть. Я думаю, вам подойдет средство для парсинга контекстно-зависимых грамматик. Я почти уверен, что подойдет! http://en.wikipedia.org/wiki/C... ve_grammar и http://en.wikipedia.org/wiki/G... ve_grammar . Как думаете, почему в браузерах они не реализованы? правильно, из-за NP-сложности. Готовых средств для парсинга этих грамматик в пхп нет, и наврядли они появятся в ближайшее время. Другой вариант -- использовать GLR парсеры, которых для php я также еще не встречал. Если б вы за это взялись, я постарался бы помочь вам в реализации. Мне просто интересно в чисто академических целях, да и парсер такой -- полезный, нужный, для некоторого рода задач. Но я сам в алгоритме не совсем до конца разобрался. Однако, следует заметить, что правила вы для него все равно замучаетесь составлять. Хотябы потому что и по-человечески это сделать затруднительно. Возьмите строку:
Тогда возьмите даже валидный код
В любой КС грамматике вы не сможете задать, скажем, ограничение на длину атрибута, в зависимости от общей длины тега. А по предыдущим двум примерам это вполне себе удобная эвристика. Также, вы не сможете подсчитать, являются ли следующие, начиная с текущей позиции, символы "похожими" (с учетом возможных повторных ошибок) на строку исходной грамматики. Даже с GLR будет все это сделать достаточно проблематично. КЗ больше подойдут, особенно для разных эвристик. Но их нереально сделать быстрыми -- как я уже сказал, это очевидная NP-задача. Поэтому ни на пхп, ни даже на других языках готового универсального решения нет и не может быть. html код можно исковеркать так, что сам черт ногу сломит, и я не знаю, насколько это применимо к Вашей базе. Вы наверняка хотите сказать, что у вас в базе такого нет. И все нормально. Ну тогда и применяйте "нормальные средства", такие как strip_tags. Опять же, я не в курсе, насколько у вас там все плохо, поэтому проверьте, что получится. Вырежет что-то лишнее -- придется возиться вручную. Это наиболее простой вариант. Чуть посложнее, но тоже "нормальный": использовать средства вроде PhantomJS, которые и делают что по сути эмулируют браузер. Правда, конечно, это уже не php (ну разве что через расширение v8 попытаться как-то его подрубить, если ну ооочень нада). Т.е. фактически вы можете получить на выходе такую структуру, как ее увидит браузер. А в нем наверняка полным-полно всяких готовых эвристик. Можете также глянуть в исходники той же мозиллы или вебкита. И все-таки, я бы рекомендовал вам не мучаться, и попробовать strip_tags. Если уж он не справится, тогда говорите конкретно, какие правила, что и как у вас есть в базе, такое, что он вырезает неправильно. Посмотрите в вашу базу (вы же ее знаете лучше любого находящегося на этом форуме!) -- может, у вас там никогда какой-то тег не закрывается, может, какой-то аттрибут, может после чего-то там следует чего-то там. И другие правила. Не универсальные, а применимые только в вашей базе. И если этих правил наберется немного, то вполне может быть, что получится свести грамматику к регулярной, или КС с небольшим (n). Просто напишите их сюда, и мы вместе постараемся составить для вас нужные регулярки Но если вы раньше давали пользователям загружать произвольный код, а сейчас хотите запретить это делать (то есть количество и качество ошибок в исходных данных почти наверняка превышает разумные пределы), то это бесполезно, и я вам заниматься этим не рекомендую. Добавлено через 3 минуты Не по теме: о, даже валидный код не подсветился как нужно:) Валидный! А вы хотите заведомо невалидный, и универсально. Ну-ну:)
1
|
29.07.2013, 08:26 | |
29.07.2013, 08:26 | |
Помогаю со студенческими работами здесь
8
RegXp и получение текста в определенном месте Извлечение текста между тегами Извлечение текста между тегами Найти текст между тегами и создать файлы из этого текста Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |