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

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

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Получить из строки HTML-ссылку

Сообщения:  [1-10]   [11-12] 

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

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

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

Спасиб mr Bin!

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

Спасиб mr Bin!

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


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


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


$id = 2 ; 
$name = TEST;


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

   
 
 автор: 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   (14.06.2007 в 20:20)   письмо автору
 
   для: kasmanaft   (14.06.2007 в 20:16)
 

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

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

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

   
 
 автор: 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='то что надо извлечь'


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

   

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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