
24.04.2009, 17:06
|
|
Постоянный
Регистрация: 06.02.2008
Сообщений: 494
С нами:
9610769
Репутация:
380
|
|
Доброго времени суток, у меня маленький вопрос, допустим есть такой html:
Код HTML:
<table align="center" width="80%"><tr><td> google.ru </td><td>PR:<b><font color=green> 2 </font></b>тИЦ:<b><font color=red> 10 </font></b></td></tr><tr><td> mail.ru </td><td>PR:<b><font color=green> 7 </font></b>тИЦ:<b><font color=red> 1700 </font></b></td></tr></table>
какой патерн более разумно использовать если мне надо выдрать данные в таком виде:
google.ru PR:2 тИЦ:10
mail.ru PR:7 тИЦ:1700
|
|
|

24.04.2009, 17:23
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами:
9497186
Репутация:
1304
|
|
Никакой, если в скрипте нужно просто такие строки выводить
PHP код:
<?
$in = '<table align="center" width="80%"><tr><td> google.ru </td><td>PR:<b><font color=green> 2 </font></b>тИЦ:<b><font color=red> 10 </font></b></td></tr><tr><td> mail.ru </td><td>PR:<b><font color=green> 7 </font></b>тИЦ:<b><font color=red> 1700 </font></b></td></tr></table>';
$in = str_replace('</tr><tr>','<br />',$in);
echo strip_tags($in,'<br>');
?>
Последний раз редактировалось Gifts; 24.04.2009 в 19:33..
|
|
|

24.04.2009, 20:20
|
|
Постоянный
Регистрация: 06.02.2008
Сообщений: 494
С нами:
9610769
Репутация:
380
|
|
Ну примерно так я и делал, но мне это не понравилось вот и хотел как вытянуть регуляркой(че то потерн не выходит), да в html есть и еще таблицы и много другого контента, я например делаю так :
PHP код:
$in =<<<HTML
Здесь html в то числе и таблицы с <tr> <td>
........
а вот эта таблица уникальна(в смысле в коде больше не встречаеться):
<table align="center" width="80%"><tr><td> google.ru </td><td>PR:<b><font color=green> 2 </font></b>тИЦ:<b><font color=red> 10 </font></b></td></tr><tr><td> mail.ru </td><td>PR:<b><font color=green> 7 </font></b>тИЦ:<b><font color=red> 1700 </font></b></td></tr></table>
...... еще htm
HTML;
preg_match('#<table align="center" width="80\%">(.*)</table>#sU',$in ,$match);
$match=!empty($match[1]) ? array_map('strip_tags',explode('</tr>',rtrim($match[1],'</tr>'))) : null;
print_r($match);
|
|
|

28.04.2009, 19:58
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами:
9223466
Репутация:
3171
|
|
Чтото я голову поломал,но тут пооже ключи нужны какието прописывать, а я вот кроме Ui ничего незнаю,точнее как работает,именно.
Вот в чем сама проблема.
Есть
PHP код:
$text = 'Hello http://allow.url/preg/match.php Hello allo';
Необходимо получить, ссылку,и только ссылку.
И да,может быть вариант с https, Как это прописываеться в регулярке?
Ествевственнл,сылка может быть разного формата с слешом на конце,так и прочие варианты.
|
|
|

28.04.2009, 20:30
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами:
9649706
Репутация:
3338
|
|
Думаю универсальной на все случаи жизни в данном случае не придумать, обязательно должно быть какое-то ограничение справа, либо расширение нужное, либо слеш, либо ">" и etc., вот вариант со слешем:
PHP код:
<?php
$text='Hello http://allow1.url/preg/match.php/ Hello allo https://allow2.url/preg/match.php/ ла-ла http://allow3.url/preg/match.php/ sss https://allow4.url/preg/match.php/';
preg_match_all("#(http://.*/.*/.*/)|(https://.*/.*/.*/)#Ui", $text, $res);
print_r($res);
?>
а вот вариант с заданным расширением (фактически просто ограничитель справа, слеш есть или нет в конце ссылки - значение не имеет особого, думаю объяснять не надо, http://sait/admin и http://sait/admin/) в итоге дадут одинаковый результат):
PHP код:
<?php
$text='Hello http://allow1.url/preg/match.php Hello allo https://allow2.url/preg/match.php ла-ла http://allow3.url/preg/match.php/ sss https://allow4.url/preg/match.php/';
preg_match_all("#(http://.*/.*/.*php)|(https://.*/.*/.*php)#Ui", $text, $res);
print_r($res[0]);
?>
либо парсить ссылки включая "<a href='kfkfkfkfkf'>название_ссылки</a>", что вообще-то более правильно и действительно универсальнее
Т.е. принцип составления ЛЮБОГО регулярного выражения простой - должно быть НАЧАЛО и должен быть КОНЕЦ, как это не странно. Если спошлняковый текст (не имена файлов и т.д., если проводить аналогию с поиском, там ОГРАНИЧЕННЫЙ текст. А тут - сплошняк сплошной.
ЗЫЖ: Вроде бы  Если не прав - думаю поправят
Последний раз редактировалось Pashkela; 28.04.2009 в 20:55..
|
|
|

28.04.2009, 22:57
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами:
9223466
Репутация:
3171
|
|
Сообщение от Pashkela
Думаю универсальной на все случаи жизни в данном случае не придумать, обязательно должно быть какое-то ограничение справа, либо расширение нужное, либо слеш, либо ">" и etc., вот вариант со слешем:
PHP код:
<?php
$text='Hello http://allow1.url/preg/match.php/ Hello allo https://allow2.url/preg/match.php/ ла-ла http://allow3.url/preg/match.php/ sss https://allow4.url/preg/match.php/';
preg_match_all("#(http://.*/.*/.*/)|(https://.*/.*/.*/)#Ui", $text, $res);
print_r($res);
?>
а вот вариант с заданным расширением (фактически просто ограничитель справа, слеш есть или нет в конце ссылки - значение не имеет особого, думаю объяснять не надо, http://sait/admin и http://sait/admin/) в итоге дадут одинаковый результат):
PHP код:
<?php
$text='Hello http://allow1.url/preg/match.php Hello allo https://allow2.url/preg/match.php ла-ла http://allow3.url/preg/match.php/ sss https://allow4.url/preg/match.php/';
preg_match_all("#(http://.*/.*/.*php)|(https://.*/.*/.*php)#Ui", $text, $res);
print_r($res[0]);
?>
либо парсить ссылки включая "<a href='kfkfkfkfkf'>название_ссылки</a>", что вообще-то более правильно и действительно универсальнее
Т.е. принцип составления ЛЮБОГО регулярного выражения простой - должно быть НАЧАЛО и должен быть КОНЕЦ, как это не странно. Если спошлняковый текст (не имена файлов и т.д., если проводить аналогию с поиском, там ОГРАНИЧЕННЫЙ текст. А тут - сплошняк сплошной.
ЗЫЖ: Вроде бы  Если не прав - думаю поправят
Спасибо,просто статьи про регулярки читал,но так для общего развития,такие регулярки и сам состаить могу конечно,но думал можно чтото типо http||https условий в них вставлять,вот эксперементирую =)
|
|
|

28.04.2009, 23:22
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами:
9649706
Репутация:
3338
|
|
а и вставленно http|https, просто расширенно
|
|
|

29.04.2009, 00:13
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами:
9497186
Репутация:
1304
|
|
PHP код:
preg_match_all('~https?://\S+~i',$in,$out);
В урле не должно быть пробельных символов.
|
|
|

30.04.2009, 10:44
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
С нами:
10562786
Репутация:
537
|
|
delete
Последний раз редактировалось Дикс; 30.04.2009 в 11:16..
|
|
|

30.04.2009, 16:35
|
|
Участник форума
Регистрация: 05.09.2007
Сообщений: 151
С нами:
9832600
Репутация:
67
|
|
у меня вопрос, как из форума выдрать кол-во репы, дату реги, кол-во сообщений, ник
форум на вобле, (в принципе пример ачата думаю поможет) и желательно с разъяснением если сможет кто
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|