Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с регуляркой 
:(
    Опции темы
Orient
Дата 21.9.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.7.2004

Репутация: нет
Всего: нет



Здравствуйте  столкнулся со странной проблемой

Есть сайт http://dle.good-advices.com/

На этой станице есть текст с ссылками:
Код


<a href="http://test.com?url=00001" target="_blank" rel="nofollow">скачать с test.com1 </a></noindex></b><br />test   <b><noindex><a href="http://test.com?url=00002" target="_blank" rel="nofollow">скачать с test.com2 </a></noindex></b><br />test   <b><noindex><a href="http://test.com?url=00003" target="_blank" rel="nofollow">скачать с test.com3 </a></noindex></b><br />test   <b><noindex><a href="http://test.com?url=00004" target="_blank" rel="nofollow">скачать с test.com4 </a>



Собственно мне надо вынуть все ссылки с этого блока, которые ведут на сайт test.com.
Я использую вот такую регулярку:
Код

$mask = '|<a(.*)href="(.*)'. $value[ 'host' ] .'(.*)".*>|';
preg_match_all( $mask, $txt, $arr );
print_r( $arr );



В результате получаю вот это:
Код

Array
(
    [0] => Array
        (
            [0] => <a href="http://test.com?url=00001" target="_blank" rel="nofollow">скачать с test.com1 </a></noindex></b><br />test   <b><noindex><a href="http://test.com?url=00002" target="_blank" rel="nofollow">скачать с test.com2 </a></noindex></b><br />test   <b><noindex><a href="http://test.com?url=00003" target="_blank" rel="nofollow">скачать с test.com3 </a></noindex></b><br />test   <b><noindex><a href="http://test.com?url=00004" target="_blank" rel="nofollow">скачать с test.com4 </a></noindex></b></div></td>
        )

    [1] => Array
        (
            [0] =>  href="http://test.com?url=00001" target="_blank" rel="nofollow">скачать с test.com1 </a></noindex></b><br />test   <b><noindex><a href="http://test.com?url=00002" target="_blank" rel="nofollow">скачать с test.com2 </a></noindex></b><br />test   <b><noindex><a href="http://test.com?url=00003" target="_blank" rel="nofollow">скачать с test.com3 </a></noindex></b><br />test   <b><noindex><a 
        )

    [2] => Array
        (
            [0] => http://
        )

    [3] => Array
        (
            [0] => ?url=00004" target="_blank" rel="nofollow
        )

)


Т.е. моя регулярка почему-то воспринимает этот блок как одну большую ссылку. Как мне вынуть из него все мои ссылки? Не подскажете ли как это сделать?

Спасибо
PM MAIL   Вверх
NLspieler
Дата 22.9.2009, 03:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 1
Всего: 19



Код

$domen = 'test.com' ;
$pattern = '/(http:\/\/' . $domen . '\S+)\"/';
preg_match_all ( $pattern , $text , $array) ;
$links_array = $array[1] ;
print_r ($links_array) ;

PM MAIL   Вверх
Orient
Дата 22.9.2009, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.7.2004

Репутация: нет
Всего: нет



NLspieler, Спасибо большое, помогло. А нельзя ли пояснить почему моя маска не работала? И в чем особенность применения \S в маске?
PM MAIL   Вверх
Ferroks
Дата 22.9.2009, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 29.6.2008

Репутация: нет
Всего: нет



мне тож помогите с регуляркой

есть html

структура такая

<DIV id=main>
<DIV id=main-content>
тут всяка хрень
<DIV>всяка хрень</DIV>
</DIV></DIV>

составил регулярку

preg_match('/<div(.*?)(id=main-content>)(.*?)<\/div><\/div>/i', $text,$mathces)

echo $mathces ничего не выводит
PM MAIL   Вверх
NLspieler
Дата 22.9.2009, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 1
Всего: 19



Orient
\w символ слова: ангиские буквы и цифры.
\W все, кроме ангиских букв и цифр
\s пробельный символ: пробел, табуляция, первод строки, первод каретки
\S не пробельный мимвол
\d цифра
\D все, кроме цифры

\S+ означает любое количество не пробелов

Почему твоя регулярка не работает, не знаю.
Расшифровать не удается

Ferroks
А что должно получится в результате?
PM MAIL   Вверх
Ferroks
Дата 23.9.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 29.6.2008

Репутация: нет
Всего: нет



Цитата(NLspieler @  22.9.2009,  18:08 Найти цитируемый пост)
FerroksА что должно получится в результате?

нужно получить вот это

<DIV id=main-content>
тут всяка хрень
<DIV>всяка хрень</DIV>
</DIV>
PM MAIL   Вверх
NewDima
Дата 25.9.2009, 06:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: -1
Всего: 12



Ferroks, зачем здесь регулярка?  smile 
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0901 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.