Ах! Эти регулярные выражения...
$string="
2-dsfsd
2-df
";
preg_match_all("/(?<=<a href=)http:\/\/.*( |>).*(?=<\/A>)/i", $string, $matches);
print_r($matches);
А на выходе:
Array ( [0] => Array ( [0] => http://1-jk-g_fg.ru>1-df_ [1] => http://2-jkg>2-dsfsd ) [1] => Array ( [0] => > [1] => > ) )
А вот типа вопросы по вышнему:
1)Основной:
Array ( [0] => http://1-jk-g_fg.ru>1-df_ - я хочу чтобы было не так, а в одной переменной был урл, а в другой имя ссылки.
2)
(?<=<a href как на месте пробела указать что там может быть чего угодно и сколько угодно ??? .* - не подходит
3)
Как на выходе получать не
[1] => http://2-jkg>2-dsfsd , а чтобы было нечто
[0] => http://2-jkg - то есть в одной переменной урл
[1] => 2-dsfsd - а в другой само слово
4)
Что это за левый пустой вывод:
Array ( [0] => > [1] => > ) )
Цитата:
preg_match_all('/<a\s+href=["\']?([^\'" >]*)[\'"]?>([^<]+)<\/a>/i', $string, $matches);
print_r($matches);
Спасибо большое, я немного подкорректировал и вот готова функция по сбору URL из переменной:
function sborlink($string){
$string=str_replace("</a>","</a> \n","$string");
$string=strip_tags($string,"<a>");
preg_match_all("/<a.+href=[\"']?([^'\" >]*)['\"]?.*>(.+)<\/a> /i", $string, $matches);
$arrg=$matches[0];
$arrli=$matches[1];
$arrna=$matches[2];
for ($i=0;$i<count($arrna);$i++){
if(!eregi($arrna[$i],$nakop)){
$nakop=$nakop." $arrna[$i]";
print ("
Вот ссылка - $arrg[$i] - Вот адрес - <input type=text value='$arrli[$i]'> - Вот имя - <input type=text value=\"$arrna[$i]\">");
}
}
}
Если в функции ошибка, напиште пожалуйста.