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

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

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

 

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

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

тема: Выделить текст между <div class="lisWrp"> и <br>
 
 автор: A1exander   (15.09.2010 в 17:46)   письмо автору
 
 

Имеется кусок кода:
<div class="itm">

    <div class="wrp"> 
    
        <a href="/Canon-PowerShot-A3000-IS.html" title="Canon PowerShot A3000 IS"> 
        <img src="http://target-site/gthumb/bf/80/bf8086d3d51beddffe0db46cba2706c9.jpg" alt="Canon PowerShot A3000 IS"> 
        <strong>Canon PowerShot A3000 IS</strong></a>  
    
        <div class="lisCont">
        
        Кол-во пикселей: 10.60 млн /   Оптический Zoom: 4.00 x /   ЖК-экран: 230000 пикселов, 2.70 дюйма /<br>
        <strong>Наличие: есть на складе</strong><br>

        <strong>Код товара:</strong>&nbsp;11345<br><br>
        <a href="/Canon-PowerShot-A3000-IS.html">Описание</a>&nbsp;&nbsp;
        <a href="/Canon-PowerShot-A3000-IS/feedback.html" title="Отзывы о Canon PowerShot A3000 IS">Отзывы</a>  &nbsp;&nbsp;
        <a href="/Canon-PowerShot-A3000-IS/images.html">Фотографии</a>
        <a href="/Canon-PowerShot-A3000-IS/cards.html" title="Карты памяти для Canon PowerShot A3000 IS">Карты памяти</a>&nbsp;&nbsp;
        
        </div> 
        
    </div> 

    <em title="цена"><b>$134</b></em>
    <ul class="uah">( 1066 грн )</ul>
    <ul class="uah_c"><a href="/actions/cart_add?product_mod_id=11345">КУПИТЬ</a></ul>

</div>


Я составил так:
preg_match("|(?<=<div class=\"lisCount\">)(.+)(?=<br>)|", $str, $matches);
print_r($matches);

Но ничего не получилось, выводит пустой массив..

  Ответить  
 
 автор: Gubichev   (15.09.2010 в 18:27)   письмо автору
 
   для: A1exander   (15.09.2010 в 17:46)
 

Переносы строк уберите

  Ответить  
 
 автор: A1exander   (15.09.2010 в 20:08)   письмо автору
 
   для: Gubichev   (15.09.2010 в 18:27)
 

<br>?

  Ответить  
 
 автор: heed   (15.09.2010 в 18:37)   письмо автору
 
   для: A1exander   (15.09.2010 в 17:46)
 

потомучто нет модификатора /s

Начало совпадения самая важная его часть, такое
"|(?<=<div class=\"lisCount\">)(.+)(?=<br>)|s"
будет сначала совпадать с каждым любым символом, после чего проверять перед ним .
<div class="lisCount">\s*(.+)(?=<br>)
будет сразу пропускать все [^<] , и только при [<] что-то проверять дальше, и не вставите туда какое-нибудь <div class=\"lisCount\">\s*

и возможно надо (.+?)

// не проверял как ведёт себя \s в двойных кавычках

  Ответить  
 
 автор: A1exander   (15.09.2010 в 20:08)   письмо автору
 
   для: heed   (15.09.2010 в 18:37)
 

К сожалению добавление s не помогло

  Ответить  
 
 автор: heed   (15.09.2010 в 20:16)   письмо автору
 
   для: A1exander   (15.09.2010 в 20:08)
 

<div class="lisCont">
и
<div class=\"lisCount\">

  Ответить  
 
 автор: A1exander   (15.09.2010 в 21:09)   письмо автору
 
   для: A1exander   (15.09.2010 в 17:46)
 

Похоже поморочил вам голову..
Я использую библиотеку simple_html_dom.php, оказалось при проверке echo gettype($str); выдало object, хотя в инструкции написано:

How to dump contents of DOM object?
// Dumps the internal DOM tree back into string
$str = $html;


Я думал string, я так понимаю из объекта сделать строку может только метод класса?

  Ответить  
 
 автор: Tonik992   (15.09.2010 в 21:27)   письмо автору
 
   для: A1exander   (15.09.2010 в 17:46)
 

Помоему можно сделать так:


<?php
preg_match
("/(?<=<div class=\"lisCont\">).+(?=<br>)/Uis"$str$matches);
print_r($matches);

Проверил: выберает то, что тебе и нужно

  Ответить  
 
 автор: A1exander   (15.09.2010 в 21:46)   письмо автору
 
   для: Tonik992   (15.09.2010 в 21:27)
 

Спасибо, это то что нужно!!!

echo $matches[0];

Выводит:
Кол-во пикселей: 10.60 млн /   Оптический Zoom: 4.00 x /   ЖК-экран: 230000 пикселов, 2.70 дюйма

Класс!

Работая с данной библиотекой я уже запутался, не поймешь где строка/массив/объект и как из одного сделать другое, и при этом еще работа с DOM(что это я пока могу лишь догадываться :)
Да и ПХП не строго типизирован..

  Ответить  
Rambler's Top100
вверх

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