HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 24.04.2009, 17:06
PaCo
Постоянный
Регистрация: 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
 
Ответить с цитированием

  #2  
Старый 24.04.2009, 17:23
Gifts
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..
 
Ответить с цитированием

  #3  
Старый 24.04.2009, 20:20
PaCo
Постоянный
Регистрация: 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); 
 
Ответить с цитированием

  #4  
Старый 28.04.2009, 19:58
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами: 9223466

Репутация: 3171


По умолчанию

Чтото я голову поломал,но тут пооже ключи нужны какието прописывать, а я вот кроме Ui ничего незнаю,точнее как работает,именно.
Вот в чем сама проблема.
Есть
PHP код:
$text 'Hello http://allow.url/preg/match.php Hello allo'
Необходимо получить, ссылку,и только ссылку.
И да,может быть вариант с https, Как это прописываеться в регулярке?
Ествевственнл,сылка может быть разного формата с слешом на конце,так и прочие варианты.
 
Ответить с цитированием

  #5  
Старый 28.04.2009, 20:30
Pashkela
Динозавр
Регистрация: 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..
 
Ответить с цитированием

  #6  
Старый 28.04.2009, 22:57
m0Hze
Он хакер.
Регистрация: 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 условий в них вставлять,вот эксперементирую =)
 
Ответить с цитированием

  #7  
Старый 28.04.2009, 23:22
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами: 9649706

Репутация: 3338


По умолчанию

а и вставленно http|https, просто расширенно
 
Ответить с цитированием

  #8  
Старый 29.04.2009, 00:13
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами: 9497186

Репутация: 1304


По умолчанию

PHP код:
preg_match_all('~https?://\S+~i',$in,$out); 
В урле не должно быть пробельных символов.
 
Ответить с цитированием

  #9  
Старый 30.04.2009, 10:44
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
С нами: 10562786

Репутация: 537


По умолчанию

delete

Последний раз редактировалось Дикс; 30.04.2009 в 11:16..
 
Ответить с цитированием

  #10  
Старый 30.04.2009, 16:35
Alekzzzander
Участник форума
Регистрация: 05.09.2007
Сообщений: 151
С нами: 9832600

Репутация: 67
По умолчанию

у меня вопрос, как из форума выдрать кол-во репы, дату реги, кол-во сообщений, ник
форум на вобле, (в принципе пример ачата думаю поможет) и желательно с разъяснением если сможет кто
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi]/[Pascal] Задай вопрос, получи ответ Isis С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 6762 17.06.2010 21:23
Всё о беспороводном соединении на кпк и смартфонах! Задай вопрос - получи ответ! ARMENIN Беспроводные технологии/Wi-Fi/Wardriving 2 02.11.2008 00:40



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.