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


Автор: C5oLoJ 21.4.2008, 09:29
Мой скрипт ищет на странице ссылки заключенные между значениями
Код

<?php

$str = file_get_contents('http://############');

$pattern = "!<br>(.*)top>!sU";

$n = preg_match_all ($pattern, $str, $res);


Но их всегда больше 1 а как вывести только скажем первую попавшуюся!?


Автор: skyboy 21.4.2008, 09:38
использовать http://php.net/preg_match вместо preg_match_all

Автор: C5oLoJ 22.4.2008, 20:23
preg_match_all — Выполняет глобальный поиск шаблона в строке
preg_match — Выполняет проверку на соответствие регулярному выражению

Мне не нужна проверка мне нужен поиск значения, только при нахождении нескольких значений должно выводится только одно значение! 

т.е. наверно нужно было спросить как настроить вывод значения а не поиск

Код

<?php

$str = file_get_contents('http://############');

$pattern = "!<br>(.*)top>!sU";

$n = preg_match_all ($pattern, $str, $res);

for ($i=0;$i<$n;$i)  
   echo ($res[1][$i++])."<br>"."Здесь текст ссылки </a>"."<br>";
?>


Данный код выводит 

все результаты поиска в виде ссылок
Здесь текст ссылки
Здесь текст ссылки
Здесь текст ссылки


А при замене на preg_match
Код

<br>Здесь текст ссылки</a>


Может я чет не понял и нужно изменить данные вывода?

Автор: skyboy 22.4.2008, 23:21
Цитата(C5oLoJ @  22.4.2008,  19:23 Найти цитируемый пост)
Выполняет проверку на соответствие регулярному выражению

неправда. результат выполнения функции - 0 или 1(количество совпадений), но возвращается также и сами части совпадения. в третьем параметре, переданном в функцию.
почему бы не читать http://ua2.php.net/preg_match? 

Автор: awers 22.4.2008, 23:24
C5oLoJ, Учить МАТЧАСТЬ. preg_match

Автор: C5oLoJ 23.4.2008, 22:00
так что ж получается так что ли:
Код

$str = file_get_contents('http://############');

$pattern = "!<br>(.*)target!sU";

$n = preg_match ($pattern, $str, $res);

for ($i=0;$i<$n;$i)  
   echo ($res[1][$i++])."><br>"."Здесь текст ссылки </a>"."<br>";



Но не работает, не пойму в чем дело вроде все правельно!
должна получится такая строка
Код

<a href="http://############" class="##########"><br>-Здесь текст ссылки</a><br>

а выходит такая
Код

><br>-Здесь текст ссылки</a><br>

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