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
Форумы портала PHP.SU :: Версия для печати :: что такого особенного в этом пункте списка???
Форумы портала PHP.SU » PHP » Регулярные выражения » что такого особенного в этом пункте списка???

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

1. ist0mina - 11 Марта, 2014 - 21:38:57 - перейти к сообщению
здравствуйте! изучаю все аттрибуты веб-разработки, в частности программирование, в частности php и регулярные выражения. Пытаюсь применять на практике. столкнулась с неведомым парадоксом. Очень надеюсь, что найдется добрый человек, кто поможет. Написала регулярное выражение, чтобы вытащить из списка ссылок, названия файлов и названия ссылок. почему-то из всего огромного списка ссылок выбирается одна, которая по виду, как я не искала, не нашла, чем отличается от остальных. Пыталась даже ее удалить в надежде, что без нее найдется что-то другое (что само по себе тоже было бы не сильно приятнее). но находится только она и ничего более!
вот код:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $subject = "
  4. <ul>
  5.                         <li><a href=\antivandalnye-rolstavni.html\>Антивандальные рольставни</a></li>
  6.                         <li><a href=\vidy-montazha-ustanovki-rolstaven.html\>Виды монтажа (установки) рольставен</a></li>                          
  7.                         <li><a href=\zamer-dostavka-montazh-garantiya.html\>Замер. Доставка. Монтаж. Гарантия</a></li>
  8.                         <li><a href=\kakim-obrazom-proishodit-upravlenie.html\>Каким образом происходит управление</a></li>
  9.                         <li><a href=\rol_kompl.php\>Комплектующие для рольставней</a></li>
  10.                         <li><a href=\rol_korob.php\>Короб защитный из двух частей с защитной пленкой</a></li>                              
  11.                         <li><a href=\rol_mebel.php\>Мебельные рольставни</a></li>
  12.                         <li><a href=\rol_mehanizmy.php\>Механизмы рольставен</a></li>
  13.                         <li><a href=\rol_mehanich.php\>Механические рольставни</a></li>
  14.                         <li><a href=\rol_napr_shiny.php\>Направляющие шины</a></li>                                
  15.                         <li><a href=\rol_podg_i_zamer.php\>Подготовка проема и замер рольставни</a></li>                                   
  16.                         <li><a href=\rol_prozrachnye_rol.php\>Прозрачные рольставни</a></li>
  17.                         <li><a href=\rol_protivopozar.php\>Противопожарные рольставни</a></li>
  18.                         <li><a href=\rol_profilya.php\>Профиля для рольставней</a></li>
  19.                         <li><a href=\rol_pulty_nero.php\>Пульты дистанционного управления рольставнями от Nero Electronics</a></li>
  20.                         <li><a href=\rol_remont_obsluzivanie.php\>Ремонт и обслуживание рольставен</a></li>
  21.                         <li><a href=\rol_doorhan.php\>Роллеты DoorHan</a></li>
  22.                         <li><a href=\rol_alu.php\>Рольставни Alutech</a></li>
  23.                         <li><a href=\rol_rol.php\>Рольставни и их применение</a></li>                          
  24.                         <li><a href=\rol_avtomaticheskie.php\>Рольставни автоматические: типы и виды</a></li>
  25.                         <li><a href=\rol_dlya_besedok.php\>Рольставни для беседок</a></li>
  26.                         <li><a href=\rol_dlya_garazha.php\>Рольставни для гаража</a></li>
  27.                         <li><a href=\rol_dlya_magazina.php\>Рольставни для магазина</a></li>
  28.                         <li><a href=\rol_dlya_dachi.php\>Рольставни для дачи</a></li>
  29.                         <li><a href=\rol_kak_peregorodka.php\>Рольставни как перегородка</a></li>
  30.                         <li><a href=\rol_na_dveri.php\>Рольставни на двери</a></li>
  31.                         <li><a href=\rol_na_okna.php\>Рольставни на окна</a></li>
  32.                         <li><a href=\rol_na_balkon.php\>Рольставни на балкон</a></li>
  33.                         <li><a href=\rol_s_foto.php\>Рольставни с фотопечатью</a></li>
  34.                         <li><a href=\rol_santeh_rol.php\>Сантехнические рольставни</a></li>
  35.                         <li><a href=\rol_stalnye.php\>Стальные рольставни</a></li>
  36.                         <li><a href=\rol_ustroistvo_rol.php\>Устройство рольставен</a></li>
  37.                         <li><a href=\rol_utepl.php\>Утепленные рольставни</a></li>
  38.                         <li><a href=\sek_chem_uteplit.php\>Чем утеплить гаражные ворота</a></li>
  39.                         <li><a href=\rol_electricheskie.php\>Электрические рольставни</a></li>
  40.                 ";
  41.                 preg_match_all('|=\\\\([^\.]+\.php)\\\\>([^<]+)|',$subject,$matches);
  42.                 print_r($matches);
  43.                
  44.  
  45. ?>
  46.  


на выходе получается:

Array ( [0] => Array ( [0] => =\sek_chem_uteplit.php\>Чем утеплить гаражные ворота ) [1] => Array ( [0] => sek_chem_uteplit.php ) [2] => Array ( [0] => Чем утеплить гаражные ворота ) )


то есть, 2-я ссылка снизу.
найдите, пожалуйста, ошибку у меня! заранее спасибо.
2. duhon - 12 Марта, 2014 - 11:07:06 - перейти к сообщению
проблема не в регулярке, а в исходных данных. Точней в том как вы их записали.

Короче поменяйте двойные кавычки на одинарные при объявлении
Цитата:
$subject = "

Тоесть не находит потому что сочетание символов "\r" это перенос строки. Обратите внимание как в вашем примере подсвечивает синтаксис.

З.Ы. Структурированный html парсите специальными средствами а не регуляркой. (это будет плюс в карму професионализма)
3. esterio - 12 Марта, 2014 - 13:42:28 - перейти к сообщению
duhon
Практически правильно, тоько это не отменяет того факта, что для Dom-а в PHP где-то 10% сайтов проходят валидацию. Я лично стараюсь же регулярками и все работает. Вот именно в данном случае регулярка неверна.
4. ist0mina - 12 Марта, 2014 - 14:47:47 - перейти к сообщению
duhon пишет:
не находит потому что сочетание символов "\r" это перенос строки. Обратите внимание как в вашем примере подсвечивает синтаксис.

Спасибо! я когда отправила, уже обратила внимание но не стала удалять или переделывать сообщение Улыбка зато теперь знаю, что поможет смена кавычек Улыбка
duhon пишет:
З.Ы. Структурированный html парсите специальными средствами а не регуляркой. (это будет плюс в карму професионализма)

а это какими, например, если не секрет?
5. duhon - 12 Марта, 2014 - 15:05:23 - перейти к сообщению
esterio пишет:
duhon
Практически правильно, тоько это не отменяет того факта, что для Dom-а в PHP где-то 10% сайтов проходят валидацию.


имхо, сначала парсинг (инструментами: Nokogiri, Tidy, Dom, SimpleHTML, PhpQuery), а потом недоработанные/частные компоненты превосходно берет на себя регулярка.

З.Ы. Валидные сайты, никогда не встречал Улыбка. Чисто для прикола, проверил страницу гугла и яндекса на валидацию http://validator[dot]w3[dot]org/ - всеравно невалидно.
6. esterio - 12 Марта, 2014 - 16:04:28 - перейти к сообщению
duhon
Ради интереса посмотрите код того же phpQuery (кажись SimleHTML также смотрел, но другие точно нет). Там найдете функционал который фиксит HTML для валидности
7. duhon - 12 Марта, 2014 - 17:22:56 - перейти к сообщению
esterio пишет:
Ради интереса посмотрите код того же phpQuery

код phpQuery я смотрел год назад (помоему мануала было мне не достаточно, пришлось пошурстеть)
esterio пишет:
функционал который фиксит HTML для валидности

и это хорошо.

 

Powered by ExBB FM 1.0 RC1