Всем привет! Хочу парсить таблицу одного сайта. Таблица начинается вот с этого: PHP: <table id="bbtable" cellpadding="0" cellspacing="0"> Заканчивается вот этим: PHP: </td></tr></table><div id="bbnotes"><span class="title"> Делаю вот так: PHP: <? $responce = file_get_contents("http://www.site.com/ges.aspx"); $patern = '|<table id="bbtable" cellpadding="0" cellspacing="0">(.*)</td></tr></table><div id="bbnotes"><span class="title">|Ui'; preg_match($patern, $responce, $result); echo $result[1]; ?> Но увы ничего не выходит и судя по всему есть ошибки Подскажите пожалуйста как будет правильно и в чём ошибка. Большое Спасибо!
PHP: <? $responce = file_get_contents('http://www.site.com/ges.aspx'); preg_match('/table(.*)id(.*)cellpadding(.*)cellspacing(.*)>(.*?)<\/td><\/tr><\/table><div(.*)id(.*)><span(.*)class(.*)>/s', $responce, $result); echo $result[5]; ?>
PHP: <?php $response = file_get_contents("http://www.site.com/ges.aspx"); preg_match_all('|<table id="bbtable" cellpadding="0" cellspacing="0">(.*)</td></tr></table><div id="bbnotes"><span class="title">|', $response, $result); echo '<pre>'; var_dump($result); echo '</pre>'; ?>
Pashkela Это особая уличная магия, использовать двадцать жадных подмасок, которые никогда не потребуются? OnArs Вместо .* используй [\s\S]* или добавь модификатор s
Странно но не работает - я даже ссылку спалю http://www.moneyfacts.co.uk/money/mortgages/4/buy-to-let-mortgages.aspx Вкладка Buy-to-let т.е.: PHP: <? $responce = file_get_contents('http://www.moneyfacts.co.uk/money/mortgages/4/buy-to-let-mortgages.aspx'); preg_match('/table(.*)id(.*)cellpadding(.*)cellspacing(.*)>(.*?)<\/td><\/tr><\/table><div(.*)id(.*)><span(.*)class(.*)>/s', $responce, $result); echo $result[5]; ?>
preg_match_all() http://ru2.php.net/preg_match_all и не пиши ты везде эти скобки, а только там, где тебе что-то нужно будет выводить, пиши []
OnArs PHP: $responce = file_get_contents('http://www.moneyfacts.co.uk/money/mortgages/4/buy-to-let-mortgages.aspx'); preg_match('#<table id="bbtable" cellpadding="0" cellspacing="0">([\s\S]*)</td></tr></table><div id="bbnotes"><span class="title">#Ui', $responce, $result); echo $result[1];
Хм... За исключением одного - почёму то переходя по ссылке _http://wwws.co.uk/money/mortFixed5, а не Buy To Let Как бы это исправить? =( // уже решил....
Есть страница, на ней по 50 ников юзверей, в исходнике они : между етими тегами, есесно uid у всех разный, нужна регулярка которая всех запихнет в массив. Я делал : ненаходит =\ находит, но не то что надо. С меня огромный плюсик, сижу уже больше часа.
PHP: preg_match_all( '#<a href="viewpro\.php\?uid=([0-9]+)" class="bold">(.+?)</a>#', $result, $matches);
И снова здравствуйте! На странице есть много ссылок вида: PHP: <a href="javascript:openWindow('/ best-buys/fees/p/maqtp5tiYJWTZJiVkWlqZpJrnmixpqvaypXJxqWUdpakqpus2qZgr6l_ttbQpJeq2mXHrNSveLLIosbGpLWmoJWrnKukopXJ1nOmu7ldl6XRctqy1Jx2yNegiMKf1W-dmqSkndOinqHKpdLIz5w/')" title="BM Solutions - Buy to Let"> Как бы так заменить всё тело ссылки, я имею ввиду то, что находится внутри ковычек, там где сейчас яваскрипт, на то что мне нужно? Думаю, что в любом случае придётся пользоваться функцией str_replace, но вот как правильно составить регулярку? Пробую вот так: PHP: preg_match_all( '<a href="(.+?)" title="BM Solutions - Buy to Let">', $result , $matches ); Но увы... Подскажите, что-нибудь, пожалуйста!
PHP: preg_replace('#<a href=".+?" title="BM Solutions - Buy to Let">#im',$zamena,$result); Попробуй так ..
Pashkela * - означает что может не быть симолов вообще ... так что лучше использовать + ... и от жадности лечить тоже нада думаю .. вопросиком =)
Имено твой вариант работает... А ты можешь переделать это под preg_replace? Если не тяжело конечно... Но мне нужно имено тело href'а, а титл кстати меняется для каждой ссылки...
если тебе надо только ОДИН раз спарсить ПЕРВУЮ попавшуюся ссылку с ТАКИМИ условиями, то конечно лучше preg_replace. А то, что "титл кстати меняется для каждой ссылки..." - именно у меня и предусмотренно PHP: <? preg_match('/<a href="(.*)" title(.*)>/s', $list, $result); echo $result[1]; ?> про тело href-а не допонял - оно и есть, только без кавычек, если надо с кавычками, просто удали их из регулярки Тьфу блин, башка вообще уже не варит в пол-третьего В общем preg_replace как ты хочешь применить? Сохранить в файл и там заменить по тем условиям, что тебе надо? Сформулируй задачу почетче. Сколько таких ссылок на странице - 1 или несколько и т.д.
Если тока для href, то почти как указал Pashkela: <? preg_match('/<a href="(.*)" .*>/s',$a, $result); echo $result[1]; ?>