Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нужна помошь

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Проблема с регуляркой
Bioslave
Отправлено: 01 Февраля, 2010 - 21:06:49
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Мне нужна спарсить с сайта вот этот кусочек :

CODE (html):
скопировать код в буфер обмена
  1. <table border="0" width="90%" cellspacing="0" cellpadding="0">
  2.                                                                                         <tr>
  3.                                                                                                 <td width="11" height="119">
  4.                                                                                                 <font size="1">
  5.  
  6.                                                                                                 <img border="0" src="images/lalalalal.jpg" width="11" height="119"></font></td>
  7.                                                                                                 <td width="100%" background="images/lalalalalal.jpg">
  8.                                                                                                 <table border="0" cellspacing="0" cellpadding="0">
  9.                                                                                                         <tr>
  10.                                                                                                                 <td width="561"><b><font size="2">Исполнитель:</font></b><font size="2"> vvvvvvvvv<br>
  11.                                                                                                                 <b>Name ttttt:</b> aaaaaaaaaaa<br>
  12.                                                                                                                 <b>Play:</b>Play 4:51</font></td>
  13.  
  14.                                                                                                                 <td width="232">
  15.                                                                                                                 <p align="center">
  16.                                                                                                                 <a href="file.php?id=MjI1MTQ5NQ==&file=yayayayayayay.wmf">
  17.                                                                                                                 <img border="0" src="iimages/lalalalal.jpg" width="152" height="50" align="right" alt="Pusk!">
  18.                                                                                                                 </a></td>
  19.                                                                                                         </tr>
  20.                                                                                                         <tr>
  21.                                                                                                                 <td width="793" colspan="2">&nbsp;</td>
  22.                                                                                                         </tr>
  23.  
  24.                                                                                                         <tr>
  25.                                                                                                                 <td width="793" colspan="2">
  26.                                                                                                                 <table border="0" width="100%" cellspacing="0" cellpadding="0">
  27.                                                                                                                         <tr>
  28.                                                                                                                                 <td width="10" height="35">
  29.                                                                                                                                 <img border="0" src="images/lalala.jpg" width="10" height="35"></td>
  30.                                                                                                                                 <td bgcolor="#6690B9">
  31.                                                                                                                                 <p align="center">
  32.                                                                                                                                 <b>
  33.  
  34.                                                                                                                                 <font color="#FDFDFD">
  35.                                                                                                                                 <div id="mp3_1">Kino!</div>
  36.                                                                                                                                 </font></b>
  37.                                                                                                                                 <script type='text/javascript'>
  38.                                                                                                                                 var s1 = new SWFObject('embed/player.swf','ply','570','20','9','#ffffff');
  39.                                                                                                                                 s1.addParam('allowfullscreen','true');
  40.                                                                                                                                 s1.addParam('allowscriptaccess','always');
  41.                                                                                                                                 s1.addParam('wmode','opaque');
  42.                                                                                                                                 s1.addParam('flashvars','file=file.php?id=MjI1MTQ5NQ==.wmf');
  43.                                                                                                                                 s1.write('mp3_1');
  44.                                       </script>
  45.                                                                                                                                 </td>
  46.                                                                                                                                 <td width="10" height="35">
  47.                                                                                                                                 <img border="0" src="images/lalalalala.jpg" width="10" height="35"></td>
  48.                                                                                                                         </tr>
  49.  
  50.                                                                                                                 </table>
  51.  


Вот как я его парсю :

CODE (htmlphp):
скопировать код в буфер обмена
  1. $string = file_get_contents('http://lalalalal.com/result.php?dddd=xaaaaa');
  2. preg_match_all('/<table border="\0\" width="\90%\" cellspacing="\0\" cellpadding="\0\">(.*?)<\/table>
  3. /ism',$string,$values);
  4. $values = $values[1];
  5. print_r($values);


На выходе : Array ( ) и всё что не так ? уже 3 сутки вожусь, жду любой помоши.

(Отредактировано автором: 01 Февраля, 2010 - 21:08:05)



-----
Ася:-ПятьШесть4035773
 
 Top
kochan10
Отправлено: 01 Февраля, 2010 - 21:12:44
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Наверное так:
PHP:
скопировать код в буфер обмена
  1. $string = file_get_contents('http://lalalalal.com/result.php?dddd=xaaaaa');
  2. preg_match_all('/<table border="0" width="90%" cellspacing="0" cellpadding="0">(.*?)<\/table>
  3. /ism',$string,$values);
  4. $values = $values[1];
  5. print_r($values);

Не вижу смысла экранировать здесь что-либо кроме слэшей. Или я не прав?
 
 Top
Bioslave
Отправлено: 01 Февраля, 2010 - 21:15:21
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Я это тоже пробовал всё равно На выходе : Array ( ) и всё хоть об стенку бейся.


-----
Ася:-ПятьШесть4035773
 
 Top
kochan10
Отправлено: 01 Февраля, 2010 - 21:16:21
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Мда уж... Пока ничего в голову не лезет, завтра подумаю.
 
 Top
trot
Отправлено: 01 Февраля, 2010 - 22:36:37
Post Id


Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Не надо делать переносов строк в регулярном выражении. И замените все пробелы в регулярном выражении на \s+. Например

CODE (htmlphp):
скопировать код в буфер обмена
  1. preg_match_all('/<table\s+border="0"\s+width="90%"\s+cellspacing="0"\s+cellpadding="0">(.*?)<\/table>/ism',$str,$values);

(Отредактировано автором: 01 Февраля, 2010 - 22:41:51)

 
 Top
Bioslave
Отправлено: 02 Февраля, 2010 - 10:08:32
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Ну опять тоже самое Array ( ) тоесть пустой результат но почему ?


-----
Ася:-ПятьШесть4035773
 
 Top
z80b
Отправлено: 02 Февраля, 2010 - 10:53:25
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Тут скорее всего дело в (.*?), т.к. точка не включает символы перевода строки.
Попробуй ([\w\W]*) например.
 
 Top
Viper
Отправлено: 02 Февраля, 2010 - 11:06:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




не работает потому-что нужно экранировать одинарные кавычки


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Bioslave
Отправлено: 02 Февраля, 2010 - 11:17:02
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Всё отлично всем спасибо за помошь, разобрался нужна было кавычки тоже экронировать )))


-----
Ася:-ПятьШесть4035773
 
 Top
kochan10
Отправлено: 02 Февраля, 2010 - 15:22:15
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




А как двойные кавычки пересекаются с одинарными? В смысле, зачем их экранировать?
 
 Top
Viper
Отправлено: 02 Февраля, 2010 - 16:16:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




kochan10 пишет:
А как двойные кавычки пересекаются с одинарными? В смысле, зачем их экранировать?


а вот так

string = 'access d\'ata roam\'ing';
string = "border=\"0\"";


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
kochan10
Отправлено: 02 Февраля, 2010 - 16:24:49
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Вот в том-то и дело, что там сам паттерн ограничен одинарными, а экранирует автор двойные внутри. Вот я и спрашиваю: зачем?
 
 Top
STRELOK
Отправлено: 02 Февраля, 2010 - 19:52:33
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Янв. 2010  
Откуда: Ульяновск


Помог: 0 раз(а)




Эта регулярка точно работает:
CODE (htmlphp):
скопировать код в буфер обмена
  1. '#<\s*table\s+border=\"0\"\s+width=\"90%\"\s+cellspacing=\"0\"\s+cellpadding=\"0\"\s*>(.*?)<\/\s*table\s*>#si'


Если надо написать регулярки на извлечение других параметров обращайся.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB