Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Всё тот же вопрос с извлечением html кода...
 
 автор: eclipse   (10.03.2006 в 14:11)   письмо автору
 
 

Приветствую =) я уже задавал подобный вопрос... сейчас он немного другой... просто хочется раз и навсегда разобраться как правильно писать выражение =)
Мне нужно вырвать весь код между

<!--
SORT PAD
-->

--------- вырываемый код ---------

<table cellpadding="2" cellspacing="0" border="0" width="100%">
<tr><td>

Таких

<table cellpadding="2" cellspacing="0" border="0" width="100%">
<tr><td>

может встречаться несколько... а мне нужно только первое вхождение... пробовал как уже советовали использовать preg_match вместо preg_match_all - не помоглу... я пишу вот так...

 $pat = "/SORT PAD([\s\S]{1,})<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\" width=\"100%\">[\s]*<tr><td>/";
 preg_match($pat,$t,$res);
 $z=$res[0]; 

Просьба указать на мои недочёты =) очень хочется раз и навсегда классна это усвоить =)

   
 
 автор: cheops   (11.03.2006 в 12:32)   письмо автору
 
   для: eclipse   (10.03.2006 в 14:11)
 

Для этого можно воспользоваться регулярным выражением
<?php 
  $str 
'<!-- 
SORT PAD 
--> 

--------- вырываемый код --------- 

<table cellpadding="2" cellspacing="0" border="0" width="100%"> 
<tr><td>'

  
$pattern "|<!--[\s]*SORT PAD[\s]*-->(.*)<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\" width=\"100%\">[\s]*<tr><td>|isU"
  
preg_match($pattern$str$out); 
  echo 
$out[1]; 
?>

Здесь проблема в "жадности", т.е. по умолчанию регулярные выражения стремятся найти как можно более длинное соответствие - инвертировать "жадность", т.е. делать выражение "не жадным" можно например при помощи Perl-модификатора U. Более подробно о модификаторах можно почитать в теме http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=7298.

   
 
 автор: eclipse   (11.03.2006 в 12:59)   письмо автору
 
   для: cheops   (11.03.2006 в 12:32)
 

=) огромное спасибо =) теперь всё встало на свои места и всё стало понятна =) пасиба =)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования