Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Получить из строки HTML-ссылку
 
 автор: superfoxter   (04.04.2007 в 14:35)   письмо автору
 
 

Скажите пожалуйста как мне сотворить из строки 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:// делать часть строки до пробела ссылкой на этот кусочек строки.


Заранее спасибо

   
 
 автор: Trianon   (04.04.2007 в 14:55)   письмо автору
 
   для: 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);

?>

   
 
 автор: sidPR   (14.06.2007 в 20:06)   письмо автору
 
   для: 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='то что надо извлечь'


в чем моя ошибка?

   
 
 автор: kasmanaft   (14.06.2007 в 20:16)   письмо автору
 
   для: sidPR   (14.06.2007 в 20:06)
 

попробуйте return $out[0];

   
 
 автор: sidPR   (14.06.2007 в 20:20)   письмо автору
 
   для: kasmanaft   (14.06.2007 в 20:16)
 

Array выдает везде причем

   
 
 автор: kasmanaft   (15.06.2007 в 13:29)   письмо автору
 
   для: sidPR   (14.06.2007 в 20:20)
 

Как заметил Enjoy, preg_match_all возвращает двумерный массив (вернее $out - двумерный массив... возвращает она кое-что другое).. То есть $out[0] - массив (одномерный). А с ним делайте уже что хотите... можно print_r(urls($txt)) попробовать.

зыж Enjoy, не согласен, что так будет правильно... Хотя бы по причине "<a.*href" (попадись две ссылки на одной строке, обработается только последняя) ... А что вот это такое вообще не понятно "[h\/][^#]"

   
 
 автор: Enjoy   (14.06.2007 в 21:36)   письмо автору
 
   для: 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";
}


Регулярное выражение у вас было составлено не совсем правильно. Попробуйте то, что предлагаю я - оно более универсально.

   
 
 автор: sidPR   (16.06.2007 в 17:46)   письмо автору
 
   для: Enjoy   (14.06.2007 в 21:36)
 


<a class=lb href='/id/2'>TEST</a>


Подскажите пожалуйста как мне выдрать из подобного кода из ссылки последнюю цифру и название тоесть в данном случаее


$id = 2 ; 
$name = TEST;


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

   
 
 автор: mr Bin   (16.06.2007 в 18:14)   письмо автору
 
   для: 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];
?>

   
 
 автор: sidPR   (16.06.2007 в 18:37)   письмо автору
 
   для: mr Bin   (16.06.2007 в 18:14)
 

Спасиб mr Bin!

   
 
 автор: sidPR   (16.06.2007 в 18:38)   письмо автору
 
   для: mr Bin   (16.06.2007 в 18:14)
 

Спасиб mr Bin!

   
 
 автор: sidPR   (27.06.2007 в 00:05)   письмо автору
 
   для: sidPR   (16.06.2007 в 18:38)
 

немного некоректно работает нужно только числа ...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования