Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Необходимо спарсить все URL-подобные подстроки, которые содержат нужный/е домены.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Zend
Отправлено: 28 Мая, 2012 - 13:07:49
Post Id


Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Есть список доменов, в массиве
PHP:
скопировать код в буфер обмена
  1.  
  2. $ar = array(
  3.         "letitbit.net",
  4.         "yandex.ru"
  5. );
  6.  

Есть переменная с текстом
PHP:
скопировать код в буфер обмена
  1.  
  2. $string = 'http://yandex.ru http://www.yandex.ru/forum/page/1/ some some text <a href="http://letitbit.net?go=naher&download=porno">I hate you little bich</a> http://www.google.ru';
  3.  

Хочу из этого текста получить массив, который содержал бы:
PHP:
скопировать код в буфер обмена
  1.  
  2. $res = array(
  3. 'http://yandex.ru',
  4. 'http://www.yandex.ru/forum/page/1/',
  5. 'http://letitbit.net?go=naher&download=porno');
  6.  
 
 Top
EuGen Администратор
Отправлено: 28 Мая, 2012 - 13:35:31
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




По-быстрому:
PHP:
скопировать код в буфер обмена
  1. $rgData = array(
  2.    "letitbit.net",
  3.    "yandex.ru");
  4. $sText  = 'http://yandex.ru http://www.yandex.ru/forum/page/1/ some some text <a href="http://letitbit.net?go=where&download=item">Something went wrong</a> http://www.google.ru www.yandex.ru/search?some_data';
  5. $rgResult=array_filter(array_map(function($sItem)
  6.    {
  7.       return preg_match('/^www\..*/ui', $sItem)?'http://'.$sItem:$sItem;
  8.    }, preg_split('/[\s\"\']+/', $sText, -1, PREG_SPLIT_NO_EMPTY)), function($sItem) use ($rgData)
  9. {
  10.    $rgUrl=parse_url($sItem);
  11.    return array_key_exists('scheme', $rgUrl) && $rgUrl['scheme']=='http' && preg_match('/'.join('|', array_map('preg_quote', $rgData)).'/ui', $rgUrl['host']);
  12. });
  13. //var_dump($rgResult);

[upd - убраны фривольности]
?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Zend
Отправлено: 28 Мая, 2012 - 13:43:02
Post Id


Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Где-то синтаксическая ошибка, не могу найти где Подозреваемый
Parse error: syntax error, unexpected T_FUNCTION, expecting ')'

(Отредактировано автором: 28 Мая, 2012 - 13:44:26)

 
 Top
EuGen Администратор
Отправлено: 28 Мая, 2012 - 13:51:17
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Zend
Это не синтаксическая ошибка, а, подозреваю, PHP 5.2. Используйте create_function вместо обычного объявления замыкания.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Zend
Отправлено: 28 Мая, 2012 - 17:07:34
Post Id


Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Спасибо, вроде работает как и просил.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB