2015-10-16 6 views
-3

Текст содержит URL, как https://www.yyyy.com/blablabla/https://www.foofoofoofoofoo/loremlorem/lorem/https:www.textext.net/Extract Сложные URL-адреса из текста

все они смежны. Regex не помог. Я бы хотел решить это; Искать https://www Если совпадения затем извлекают (только первые 10 символов) в массив.

+0

Почему не существует, по крайней мере, разрывов строк после каждого элемента? Добавить строку разрывает взорвать строку '\ n' и прокручивать. –

+0

Я не подготовил текст. Он содержит до 500 URL-адресов, таких как без разрывов строк. – NSAN

+0

Explode at http –

ответ

0

Решение может быть:

<?php 
$str = "https://www.yyyy.com/blablabla/https://www.foofoofoofoofoo/loremlorem/lorem/https:www.textext.net/"; 
    //add an space to explode it easily:  
    $my_str = preg_replace("*https:*", " https:", $str); 
    $values = explode(' ', $my_str);  
    var_dump($values); 
?> 

EDIT:

<?php 
     //First separate the url string: 
$str = "https://www.yyyy.com/blablabla/https://www.foofoofoofoofoo/loremlorem/lorem/https:www.textext.net/https://youtube.com/channels/uniqueID/about/foofoofoo/foo"; 
$breakpoint = "https:"; 
//add an space to explode it easily:  
$my_str = preg_replace("*" . $breakpoint . "/?/?*", " ", $str); 
$values = explode(' ', $my_str);  
var_dump($values); 

//Now, foreach url you can perform whatever you want: 
$end = "about/"; 
$a = array(); 
foreach($values as $value){ 
    if(preg_match("*" . $end . "*",$value)){ 
     //split string in parts: 
     $val = preg_split("*" . $end . "*",$value); 
     $a[] = $val[0]; 
    } 
} 

var_dump($a); 
?> 
+0

Можно ли написать регулярное выражение для захвата spesific частей ссылки? youtube.com/channels/uniqueID/about/foofoofoo/foo Как я могу извлечь только эту часть www.youtube.com/channels/uniqueID/ между https: и около – NSAN

0

Согласно тексту вы дается как образец, я думаю, что preg_split является лучшим выбором:

$urls = preg_split('/(http){1}s?\:(\/\/)?/i', $text); 

$ URL-адрес будет вашим желаемым массивом расщепленных URL-адресов. Протестируйте его по нескольким вашим полным текстам & дайте нам знать

+0

Не работал. Можно ли написать регулярное выражение для захвата spesific частей ссылки? https://www.youtube.com/channels/uniqueID/about/foofoofoo/foo Как я могу извлечь только эта часть www.youtube.com/channels/uniqueID/ между https: и о – NSAN

+0

HTTP: //sandbox.onlinephpfunctions.com/code/038e70049432593dcb2b48874ebc66835ed05e82 он работает ... Удалите g из конца шаблона - PHP не понимает этот модификатор – Arif

+0

О других частях выделения URL - да, это возможно, если вы можете найти шаблон. Пример - только доменное имя или до 2 слэшей после домена или общее ключевое слово, например «about», uniqueid и т. Д., Поиск правильного шаблона - это трюк - хотя это невозможно всегда, по крайней мере, не в вашем образце текста URL-адреса – Arif