|
|
|
| Скажите пожалуйста как мне сотворить из строки http://www.bbk.ru/DW9916S.ruk.htm ссылку вида <a href="http://www.bbk.ru/DW9916S.ruk.htm">http://www.bbk.ru/DW9916S.ruk.htm</a>
Тоесть при сканеровании строки встречая http:// делать часть строки до пробела ссылкой на этот кусочек строки.
Заранее спасибо | |
|
|
|
|
|
|
|
для: superfoxter
(04.04.2007 в 14:35)
| |
<?php //include('config.inc.php');
$txt = '
Скажите пожалуйста как мне сотворить из
строки http://www.bbk.ru/DW9916S.ruk.htm ссылку
вида <a href="http://www.bbk.ru/DW9916S.ruk.htm">http://www.bbk.ru/DW9916S.ruk.htm</a>
Тоесть при сканеровании строки встречая http:// делать
часть строки до пробела ссылкой на этот кусочек строки.
Заранее спасибо
';
$t = preg_replace('#http://([^\s]+)#', '<a href="http://\1">http://\1</a>', $txt);
echo //htmlspecialchars
($t);
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(04.04.2007 в 14:55)
| | у меня другая трабла пишу
function urls($txt){
$pattern = "#(http|www)[^\s]+#is";
preg_match_all($pattern, $txt, $out);
return $out[1];
}
|
в $txt может быть любомй HTML код ссылки всегда такого вида :
href='то что надо извлечь'
|
в чем моя ошибка? | |
|
|
|
|
|
|
|
для: sidPR
(14.06.2007 в 20:06)
| | попробуйте return $out[0]; | |
|
|
|
|
|
|
|
для: kasmanaft
(14.06.2007 в 20:16)
| | Array выдает везде причем | |
|
|
|
|
|
|
|
для: sidPR
(14.06.2007 в 20:20)
| | Как заметил Enjoy, preg_match_all возвращает двумерный массив (вернее $out - двумерный массив... возвращает она кое-что другое).. То есть $out[0] - массив (одномерный). А с ним делайте уже что хотите... можно print_r(urls($txt)) попробовать.
зыж Enjoy, не согласен, что так будет правильно... Хотя бы по причине "<a.*href" (попадись две ссылки на одной строке, обработается только последняя) ... А что вот это такое вообще не понятно "[h\/][^#]" | |
|
|
|
|
|
|
|
для: sidPR
(14.06.2007 в 20:06)
| | preg_match_all возвращает двумерный массив типа [ $a ][ $i ], где а - номер совпавшей скобки (0 - вся совпавшая строка), а i - итератор.
Правильно будет так:
function urls( $txt ){
preg_match_all( "~\<a.*href=\"([h\/][^#].*?)\"~i", $txt, $out, PREG_PATTERN_ORDER );
$amount = count( $out[ 0 ] );
for ( $i = 0; $i < $amount; $i++ )
{
echo $out[ 1 ][ $i ]."<br />\n";
}
|
Регулярное выражение у вас было составлено не совсем правильно. Попробуйте то, что предлагаю я - оно более универсально. | |
|
|
|
|
|
|
|
для: Enjoy
(14.06.2007 в 21:36)
| |
<a class=lb href='/id/2'>TEST</a>
|
Подскажите пожалуйста как мне выдрать из подобного кода из ссылки последнюю цифру и название тоесть в данном случаее
Заранее, спасибо огромное! | |
|
|
|
|
|
|
|
для: sidPR
(16.06.2007 в 17:46)
| |
<?php
$content = "<a class=lb href='/id/2'>TEST</a>";
$pattern = "|<a class=lb href=\'/id/([^<]+)\'>([^<]+)</a>[\s]*|is";
preg_match_all($pattern, $content, $out);
$id = $out[1][0];
$name = $out[2][0];
?>
|
| |
|
|
|
|
|
|
|
для: mr Bin
(16.06.2007 в 18:14)
| | Спасиб mr Bin! | |
|
|
|
|
|
|
|
для: mr Bin
(16.06.2007 в 18:14)
| | Спасиб mr Bin! | |
|
|
|
|
|
|
|
для: sidPR
(16.06.2007 в 18:38)
| | немного некоректно работает нужно только числа ... | |
|
|
|