Парсер урлов из исходного кода

12 3
DB
На сайте с 30.03.2008
Offline
46
1606

Здравствуйте!

Поправьте ошибку в этом коде пожалуйста


<form method="post" action="222.php">
<textarea name=text rows=6 cols=40></textarea>
<input type="submit" value="Go!">
</form>

<?php

preg_match_all('~<a\\s+href="(.*?)">~', $_POST['text'], $m);
print_r($m[1]);

?>

Мне нужно чтобы при вводе исходного html кода в форму, код обрабатывался этой командой и выводились только урлы

Заранее огромное спасибо!

LA
На сайте с 03.06.2008
Offline
105
#1


<form method="post" action="">
<textarea name=text rows=6 cols=40></textarea>
<input type="submit" value="Go!">
</form>

<?php

if (isset($_POST['text'])) {
preg_match_all('~<a.*href=([\'"]*)([^\\1]+)\\1.*>~isU', $_POST['text'], $m);
print_r($m['2']);
}

?>

Как-то так. Сейчас проверить не могу

DB
На сайте с 30.03.2008
Offline
46
#2

не работает(( выдает ошибку Array ( [0] => \ )

S
На сайте с 13.07.2007
Offline
56
#3

Так посмотрите, что выдается во всем $m

Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#4

preg_match_all('~<a.*href="([^\'"]*)".*>~isU', $_POST['text'], $m);

print_r($m[1]);
S
На сайте с 13.07.2007
Offline
56
#5

stripslashes на $_POST

DB
На сайте с 30.03.2008
Offline
46
#6
Алексей Барыкин:
preg_match_all('~<a.*href="([^\'"]*)".*>~isU', $_POST['text'], $m);

print_r($m[1]);

Все равно не работает, выводит только Array ( )

S
На сайте с 15.07.2008
Offline
139
#7
DrumBass:
Все равно не работает, выводит только Array ( )

Правильно solnikolay подсказал. stripslashes() надо использовать. У тебя скорее всего включен magic_quotes_gpc и весь HTML приходит в $_POST['text'] квотированный. И естественно, регексп не отрабатывает.


<form method="post" action="">
<textarea name=text rows=6 cols=40></textarea>
<input type="submit" value="Go!">
</form>

<?php

if( isset($_POST['text']) ) {
preg_match_all('~<a.*href="(.*)".*>~isU', stripslashes( $_POST['text'] ), $m);
print_r($m[1]);
}

?>
LA
На сайте с 03.06.2008
Offline
105
#8


<form method="post" action="">
<textarea name=text rows=6 cols=40></textarea>
<input type="submit" value="Go!">
</form>

<?php

if (isset($_POST['text'])) {
$_POST['text'] = stripslashes($_POST['text']);

preg_match_all('~<a.*href=[\'"]*([^\'"]+)[\'"]*.*>~isU', $_POST['text'], $m);
print_r($m['1']);
}

?>
DB
На сайте с 30.03.2008
Offline
46
#9

Всем спасибо! Заработал код, который написал Santyago, но скрипт выводит Array ( [0] => http://www.site.ru ) хотелось бы, чтобы выводился только сам урл(http://www.site.ru) и все. Как такое реализовать?

S
На сайте с 15.07.2008
Offline
139
#10
DrumBass:
Всем спасибо! Заработал код, который написал Santyago, но скрипт выводит Array ( [0] => http://www.site.ru ) хотелось бы, чтобы выводился только сам урл(http://www.site.ru) и все. Как такое реализовать?

Гм. А если в тексте будет несколько урлов?

Если это не сильно смущает :) , то так:

<form method="post" action="">

<textarea name=text rows=6 cols=40></textarea>
<input type="submit" value="Go!">
</form>

<?php

if( isset($_POST['text']) ) {
preg_match_all('~<a.*href="(.*)".*>~isU', stripslashes( $_POST['text'] ), $m);
if( isset( $m[1][0] ) ) echo $m[1][0];
else 'Урл не найден';
}

?>
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий