Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > RegExp - извлечь данные между 2 выражениями


Автор: EdgarJ 18.5.2009, 15:09
Здравствуйте , товарищи. 

Проблемка такая. Есть строка "a+x+b", где а и б подстроки , которые я могу полностью описать используя регулярные выражения, но мне нужен только Х. (+ это просто для обозначения конкетации). 

Я пробовал экспериментировать по всякому, используя решение найденное в и-нете - "<td[^>]*>([^<]*)<\/td>". Данное решение выдирает инфу между тэгами td, но я не понимаю принцип работы этого выражения, может кто то может обяснить.

Если говорить о более конкретном примере, то вот 

Код

<?php 
header("Content-type: text/plain; charset=UTF-8");


$string = "<td colspan=\"3\">Full name  <font color=\"#d916de\">John Smith</font></td>";
$result = array ();
$pattern = "/<td[^>]*>([^<]*)<\/td>/";
$timesMatched = 0;

$timesMatched = preg_match($pattern,$string,$result);
echo $string;
echo "\n";
if ($timesMatched > 0)
    {
        print_r($result);
    }
else
    {
        echo "nerabotajet";
    }


Я полагаю из за того, что после открывающего тэга следует colspan, данное решение и не работает. Так как принцип его работы для меня окутан в тумане, сам поправить не могу.
Конечно можно сплитить используя или заменять используя тот же regexp, но хочется всё таки понять, как сделать таким методом. smile

Автор: ksnk 18.5.2009, 16:43
$pattern = "/<td[^>]*>(.*?)<\/td>/";


Автор: EdgarJ 18.5.2009, 16:56
Угу, спасибо. Уже разобрался, что в массиве результатов будет сабпаттерн из скобок.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)