PDA

Просмотр полной версии : Помогите с регуляркой


jenaDI
08.06.2010, 21:46
Допустим имеем страницу с ссылками
<a href="details.php?id=1&hit=1">name</a>
<a href="details.php?id=1&hit=1">name</a>
<a href="details.php?id=1&hit=1">name</a>
<a href="details.php?id=1&hit=1">name</a>

$details = 'details.php?id=[id]&hit=1';
//Формируем массив с номерами торрентов
$details_r = $details;
$details_r = str_replace('?' , '\?' , $details_r); //Экранируем специальные символы
$details_r = str_replace('.' , '\.' , $details_r); //Экранируем специальные символы
$details_r = str_replace('&' , '\&' , $details_r); //Экранируем специальные символы
$details_r = str_replace('[id]' , '(\d+)' , $details_r); //Меняем id
// die('/"'.$details_r.'"\>(.*)\</i');
preg_match_all('/"'.$details_r.'"\>(.*)/i', $getBrowseFull, $setTorrentId);



почему регулярка не ищет?

wildshaman
08.06.2010, 22:03
Потому что ты наркоман
Я даже не понял, что ты отпарсить пытаешься

krypt3r
08.06.2010, 22:14
<?php
$str = <<< EOL
<a href="details.php?id=111&hit=1">name 1</a>
<a href="details.php?id=222&hit=1">name 2</a>
<a href="details.php?id=333&hit=1">name 3</a>
<a href="details.php?id=444&hit=1">name 4</a>
EOL;

$details = 'details.php?id=[id]&hit=1';
$details_r = str_replace(array ('?', '.', '[id]') ,
array ('\?', '\.', '(\d+)') , $details);
preg_match_all ('/"' . $details_r . '">(.*?)</i', $str, $m);
print_r ($m);
?>

Повнимательней с кодом. Лишние символы нет смысла "экранировать"

eLWAux
08.06.2010, 22:53
/details.php.id.1.hit=1.>(.+?)</i