Просмотр полной версии : [Регулярки & Mod_Rewrite] Задай вопрос, получи ответ.
Здравствуйте знатоки.
Вопрос от телезрителя.
У меня на страничке много <cite> site.ru - </cite>
Нужно отпарсить все URL, (site.ru), и записать их в файл (Запись и т.п. сам сделаю), нужна лишь регулярка, которая это всё вынесет в PHP.
На кону 0 руб, 0 копеек :)
<?php
if (preg_match_all('/\<cite\>(.*?)\<\/cite\>/', $result, $temp)) {
$handle = fopen('./text.txt', 'a');
foreach($temp[1] as $tempdata => $site) {
fwrite($handle, $site."\n");
}
fclose($handle);
}
?>
felix_
<?php
$answer = "<br/><br/>
1
<br/><br/>
2
<br/><br/>";
preg_match('#<br/><br/>\s+.+\s+<br/><br/>\s+(.+)\s+<br/><br/>#i',$answer,$count);
print_r($count);
?>
да, с 2 работает а если такой answer?вырезать получается надо [Мы всё соб] ... [ лежать]
$answer = " <span class=label>Кому:</span> <a href=id64xxxx098>xxxна</a><br/>
<span class=label>Дата:</span> 13 фев 2010 в 23:04<br/><br/>
<span class=label>Тема:</span> Re(6): ...<br/><br/>
Мы всё собираемся собираемся, а никак собраться не можем!!!!!!!Тебе сколько ещё лежать<br/><br/>
<span class=label>Ответить:</span><br/>
<textarea rows=5 cols=17 name=message></textarea><br/>";
felix_
дык покажи,что надо выдернуть конкретно
Мы всё собираемся собираемся, а никак собраться не можем!!!!!!!Тебе сколько ещё лежать
помогите с регуляркой.
имеется
radioshow|http://site.ru/1.mp3
radioshow|http://site.ru/2.mp3||WPPufhw
как вытащить ссылки
http://site.ru/1.mp3
http://site.ru/2.mp3
:(
draliokero
16.02.2010, 20:35
D0S,
$data = "radioshow|http://site.ru/1.mp3
radioshow|http://site.ru/2.mp3||WPPufhw";
preg_match_all("#radioshow\|(.*\.mp3)#i",$data,$matches);
echo "<pre>";
print_r($matches);
felix_,
$answer = '<span class=label>Кому:</span> <a href=id64xxxx098>xxxна</a><br/>
<span class=label>Дата:</span> 13 фев 2010 в 23:04<br/><br/>
<span class=label>Тема:</span> Re(6): ...<br/><br/>
Мы всё собираемся собираемся, а никак собраться не можем!!!!!!!Тебе сколько ещё лежать<br/><br/>
<span class=label>Ответить:</span><br/>
<textarea rows=5 cols=17 name=message></textarea><br/>';
preg_match("#Тема.*<br/>\s+(.*)#i",$answer,$matches);
print_r(strip_tags($matches[1]));
Buffalon
17.02.2010, 01:52
http://5ka.ru//3/5153/1.html
Как мне отсюда достать 3 ??????которая после слеша
http://5ka.ru//3/5153/1.html
Как мне отсюда достать 3 ??????которая после слеша
#http://5ka\.ru//(.+?)/[0-9]+/.+\.html#i
Pashkela
17.02.2010, 02:17
<?php
$host = "http://5ka.ru//3/5153/1.html";
preg_match("|^http:\/\/.*\/\/([0-9]+)\/|",$host,$a);
print_r ($a[1]);
?>
имеем:
http://site.ru/page=about
http://site.ru/?news&id=1
http://site.ru/?products&id=1
нужно:
http://site.ru/about
http://site.ru/news/1
http://site.ru/products/1
спасибо :)
mod_rewrite
RewriteRule ^about$ /?page=about
RewriteRule ^(.+)/(.*)$ /?$1&id=$2
Что-то типа.
Пользуюсь регуляркой в первые! Подскажите?
Есть html код который нада вырезать :
<div class="audioRow" id="audio72620190"> <a name='72620190'></a> <table width="100%"><tbody> <tr><td style="width: 20px; vertical-align:top"> <img class="playimg" onclick="return operate(72620190,'http://cs4532.vkontakte.ru/u7309745/audio/63d88b575624.mp3',440);" id="imgbutton72620190" nosorthandle="true" src="images/play.gif"/> </td> <td style="width: 360px;"><div class="audioTitle"> <b id="performer72620190"><a href='gsearch.php?section=audio&c[q]=О. Почепа'>О. Почепа</a></b><span> - </span><span id="title72620190">Те Кто Меня (Master House Remix 2009)</span> </div> <div class="duration">7:20</div> </td> </tr> </tbody></table> <div style="height:14px;margin-left:28px;"> <div id="line72620190" class="playline"></div> <div id="toddler72620190" class="toddler"> </div> <div id="player72620190" style="display: none;" class="playerClass"> </div> </div> <div id="lyrics72620190"></div> </div>
С чего начать?
Пользуюсь регуляркой в первые! Подскажите?
Есть html код который нада вырезать :
<div class="audioRow" id="audio72620190"> <a name='72620190'></a> <table width="100%"><tbody> <tr><td style="width: 20px; vertical-align:top"> <img class="playimg" onclick="return operate(72620190,'http://cs4532.vkontakte.ru/u7309745/audio/63d88b575624.mp3',440);" id="imgbutton72620190" nosorthandle="true" src="images/play.gif"/> </td> <td style="width: 360px;"><div class="audioTitle"> <b id="performer72620190"><a href='gsearch.php?section=audio&c[q]=О. Почепа'>О. Почепа</a></b><span> - </span><span id="title72620190">Те Кто Меня (Master House Remix 2009)</span> </div> <div class="duration">7:20</div> </td> </tr> </tbody></table> <div style="height:14px;margin-left:28px;"> <div id="line72620190" class="playline"></div> <div id="toddler72620190" class="toddler"> </div> <div id="player72620190" style="display: none;" class="playerClass"> </div> </div> <div id="lyrics72620190"></div> </div>
С чего начать?
Вопрос не полный, ЧТО именно вырезать и пример ОТКУДА. На вскидку я догадываюсь что тебя интересует ссылка на мп3 файл, описание.
<?php
$str = <<<HTML
<div class="audioRow" id="audio72620190"> <a name='72620190'></a> <table width="100%"><tbody> <tr><td style="width: 20px; vertical-align:top"> <img class="playimg" onclick="return operate(72620190,'http://cs4532.vkontakte.ru/u7309745/audio/63d88b575624.mp3',440);" id="imgbutton72620190" nosorthandle="true" src="images/play.gif"/> </td> <td style="width: 360px;"><div class="audioTitle"> <b id="performer72620190"><a href='gsearch.php?section=audio&c[q]=О. Почепа'>О. Почепа</a></b><span> - </span><span id="title72620190">Те Кто Меня (Master House Remix 2009)</span> </div> <div class="duration">7:20</div> </td> </tr> </tbody></table> <div style="height:14px;margin-left:28px;"> <div id="line72620190" class="playline"></div> <div id="toddler72620190" class="toddler"> </div> <div id="player72620190" style="display: none;" class="playerClass"> </div> </div> <div id="lyrics72620190"></div> </div>
HTML;
if(preg_match('#(http://.*\.mp3).*<span id="title.*">(.*)</span>.*<div class="duration">(.*)</div>#Uis', $str, $m))
echo "<a href='$m[1]'>$m[2] [$m[3]]</a>";
?>
Выводит : ссылка [длинна трека]
Те Кто Меня (Master House Remix 2009) [7:20]
<div class="itemtext nop "style="margin-left:0">
<img src="/img/status/xStatus_14.gif" alt="Статус" title="Статус" height="15" width="16"/>
Прихожу в себя ...
<div class="infobar"><div class="source ">
<a href="/msg/52678751">более 5 часов назад</a> через <a class="nobg" href="http://qip.ru/ru/pages/download_infium_ru/" title="QIP Infium">qip</a></div>
<div class="fr small">
<a class="msg_ans_ie6fl" href="/msg/52678751" onclick="return login('/msg/52678751');">ответить</a> </div>
В регулярках мало что понимаю помогите выпарсить отмеченные данные.
<?php
$text='<div class="itemtext nop "style="margin-left:0">
<img src="/img/status/xStatus_14.gif" alt="Статус" title="Статус" height="15" width="16"/>
Прихожу в себя ...
<div class="infobar"><div class="source ">';
preg_match('#<img src="(.*)" alt="Статус" title="Статус" height="15" width="16"/>#',$text,$m);
preg_match('#<img src=".*" alt="Статус" title="Статус" height="15" width="16"/>\s\r\n(.*)<div class="infobar"><div class="source ">#s',$text,$t);
echo "$t[1] $m[1]";
?>
уже хочется спать
<?php
$data = <<<HTML
<div class="itemtext nop "style="margin-left:0">
<img src="/img/status/xStatus_14.gif" alt="Статус" title="Статус" height="15" width="16"/>
Прихожу в себя ...
<div class="infobar"><div class="source ">
<a href="/msg/52678751">более 5 часов назад</a> через <a class="nobg" href="http://qip.ru/ru/pages/download_infium_ru/" title="QIP Infium">qip</a></div>
<div class="fr small">
<a class="msg_ans_ie6fl" href="/msg/52678751" onclick="return login('/msg/52678751');">ответить</a> </div>
HTML;
if(preg_match('#<img src="(.*)" alt="Статус" title="Статус" height="15" width="16"/>(.*)<div#Uis', $data, $m))
echo 'Статус-ссылко: <b>'.$m[1].'</b><br>Статус-текст<b>'.$m[2].'</b>';
?>
programming
22.02.2010, 16:41
Нужна регулярка для универсального выдирания ссылок из html.
Спасибо.
programming
22.02.2010, 18:22
Далеко не универсально..
Чтоб не разводить на 15 топиков, можно было б с своем посте написать что именно тебе не нравится в регулярке, и получить ответ.
реально ли составить регулярку на проверку одинаковых знаков?
например: 11111, 55555555
j0ker13
<html>
<form id="form1" name="form1" method="post" action="">
<input name="text" type="text" id="text" />
<input type="submit" name="Submit" value="Submit" />
</form>
</html>
<?
$text=$_POST['text'];
if(preg_match('/1{2,}|2{2,}|3{2,}|4{2,}|5{2,}|6{2,}|7{2,}|8{2,}|9{ 2,}|0{2,}/',$text)){
echo "good";
}else{
echo "bad";
}
?>
Как будет правельно ?
$s=preg_replace('#<a href="pic.php?namesid=(.*);name=(.*);">(.*)</a>#iU','',$s);
(.*) - неизвестно т.е. меняется с каждым разом
Pashkela
25.02.2010, 15:35
<?php
$s = '
текст1<a href="pic.php?namesid=1;name=вася;">вася</a>
текст2<a href="pic.php?namesid=2;name=петя;">петя</a>
текст3<a href="pic.php?namesid=3;name=егор;">егор</a>
';
$s = preg_replace('#<a href="pic.php\?namesid=.*;name=.*;">.*</a>#iU','',$s);
echo $s;
?>
Есть что то типа этого
$s='<b>Вася</b>';
$s = preg_replace('#<b>.*</b>#iU','\\1',$s);
echo $s //Вася
Нам вернёт "Вася" .
А как сделать, чтобы вернуло просто теги "<b></b>" ?
Pashkela
25.02.2010, 17:56
<?php
$string = '<b>вася</b>';
echo preg_replace('#(<b>)(.*)(</b>)#i', '${1}$3', $string);
?>
вкуривай уже)
http://php.net/manual/en/function.preg-replace.php
<?php
$string = '<b>вася</b>';
echo preg_replace('#(<b>)(.*)(</b>)#i', '${1}$3', $string);
?>
вкуривай уже)
http://php.net/manual/en/function.preg-replace.php
Благодарю )
Пошёл курить
Добрый вечер )
<div style="background-color: #ffffff; border: solid 1px #ffffff; padding:5px 5px 0px 5px; margin:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif;">
<div style="border-bottom:1px #a4cef2 solid; height:8px;"><a href="http://wap.plus1.wapstart.ru/"><img style="margin:0px; padding:0px; vertical-align:top; border:none;" alt="#" width="67" height="8" src="http://ro.plus1.wapstart.ru/banner_images/static/adverst-logo.gif"/></a></div>
<p style="margin:0px 0px 0px 0px; padding:0px 0px 0px 0px;">
<a href="http://ro.plus1.wapstart.ru/index.php?area=redirector&type=1&rsId=firm1_972941 605af8978e90f11a6647717cd9498d7a37&site=563&unique Plus1UserId=e52706061d1831c7ea040e0984e5503a5a396f 93" style="color: #0e3fcc; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; text-decoration:underline;">Я люблю, когда больно! Ударь меня!</a>
<br />
<span style="color: #000000; line-height:11px; margin:0px 0px 0px 0px; padding:4px 0px 3px 0px;">Цена 10 руб/мин! МТС Билайн Мегафон</span>
</p>
</div>
<img src="http://ro.plus1.wapstart.ru//?area=counter&clientSession=15d1845489238a3b5c971c 1336cfbcc49e0e85be&bannerId=6593&site=563" alt="" style="display: none; position:absolute;"/>
<div style="background-color: #ffffff; border: solid 1px #ffffff; padding:5px 5px 0px 5px; margin:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif;">
<p style="margin:0px 0px 0px 0px; padding:0px 0px 0px 0px;">
<a href="http://ro.plus1.wapstart.ru/index.php?area=redirector&type=1&rsId=firm1_2d07b1 3974ab8e2a5848d912c6f12bf2013b7136&site=563&unique Plus1UserId=e52706061d1831c7ea040e0984e5503a5a396f 93" style="color: #0e3fcc; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; text-decoration:underline;">Истекаю соком! Звони! Маша </a>
<br />
<span style="color: #000000; line-height:11px; margin:0px 0px 0px 0px; padding:4px 0px 3px 0px;">Цена 10 руб/мин! МТС Билайн Мегафон</span>
</p>
</div>
Пробую вырезать такой код вот так вот
$s=preg_replace('#<div style="background-color: \#ffffff; border: solid 1px \#ffffff; padding:5px 5px 0px 5px; margin:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif;">(.*)</div>#iU','',$s);
Где у меня ошибка?
Помогите пожалуйста
что вытащить надо?
я так понимаю,что тебе надо вырезать это
<p style="margin:0px 0px 0px 0px; padding:0px 0px 0px 0px;">
<a href="http://ro.plus1.wapstart.ru/index.php?area=redirector&type=1&rsId=firm1_2d07b1 3974ab8e2a5848d912c6f12bf2013b7136&site=563&unique Plus1UserId=e52706061d1831c7ea040e0984e5503a5a396f 93" style="color: #0e3fcc; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; text-decoration:underline;">Истекаю соком! Звони! Маша </a>
<br />
<span style="color: #000000; line-height:11px; margin:0px 0px 0px 0px; padding:4px 0px 3px 0px;">Цена 10 руб/мин! МТС Билайн Мегафон</span>
</p>
мне нужно целый код вырезать , вот я и пытался резать от сех
<div style="background-color: #ffffff; border: solid 1px #ffffff; padding:5px 5px 0px 5px; margin:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif;">
до сех
</div>
т.е. до самого конца
а про это, '',$s); это я так вырезаю :D
Pashkela
26.02.2010, 21:47
<?php
$string = '
dfgfdgdfgdfg
dfgdfgdfgdfgf
dgdfgfdgdfgdfg
<div style="background-color: #ffffff; border: solid 1px #ffffff; padding:5px 5px 0px 5px; margin:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif;">
<div style="border-bottom:1px #a4cef2 solid; height:8px;"><a href="http://wap.plus1.wapstart.ru/"><img style="margin:0px; padding:0px; vertical-align:top; border:none;" alt="#" width="67" height="8" src="http://ro.plus1.wapstart.ru/banner_images/static/adverst-logo.gif"/></a></div>
<p style="margin:0px 0px 0px 0px; padding:0px 0px 0px 0px;">
<a href="http://ro.plus1.wapstart.ru/index.php?area=redirector&type=1&rsId=firm1_972941 605af8978e90f11a6647717cd9498d7a37&site=563&unique Plus1UserId=e52706061d1831c7ea040e0984e5503a5a396f 93" style="color: #0e3fcc; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; text-decoration:underline;">ппц текст 1</a>
<br />
<span style="color: #000000; line-height:11px; margin:0px 0px 0px 0px; padding:4px 0px 3px 0px;">Цена 10 руб/мин! МТС Билайн Мегафон</span>
</p>
</div>
<img src="http://ro.plus1.wapstart.ru//?area=counter&clientSession=15d1845489238a3b5c971c 1336cfbcc49e0e85be&bannerId=6593&site=563" alt="" style="display: none; position:absolute;"/>
<div style="background-color: #ffffff; border: solid 1px #ffffff; padding:5px 5px 0px 5px; margin:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif;">
<p style="margin:0px 0px 0px 0px; padding:0px 0px 0px 0px;">
<a href="http://ro.plus1.wapstart.ru/index.php?area=redirector&type=1&rsId=firm1_2d07b1 3974ab8e2a5848d912c6f12bf2013b7136&site=563&unique Plus1UserId=e52706061d1831c7ea040e0984e5503a5a396f 93" style="color: #0e3fcc; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; text-decoration:underline;">ппц текст 2 </a>
<br />
<span style="color: #000000; line-height:11px; margin:0px 0px 0px 0px; padding:4px 0px 3px 0px;">Цена 10 руб/мин! МТС Билайн Мегафон1</span>
</p>
</div>
lflflflf
fdgfsgfsdg
sdgsfdgsdg
dsgsdgdsfg
';
echo preg_replace('#(<div.*<p.*<img.*</div>)#Uis','',$string);
?>
<?php
$string = '
dfgfdgdfgdfg
dfgdfgdfgdfgf
dgdfgfdgdfgdfg
<div style="background-color: #ffffff; border: solid 1px #ffffff; padding:5px 5px 0px 5px; margin:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif;">
<div style="border-bottom:1px #a4cef2 solid; height:8px;"><a href="http://wap.plus1.wapstart.ru/"><img style="margin:0px; padding:0px; vertical-align:top; border:none;" alt="#" width="67" height="8" src="http://ro.plus1.wapstart.ru/banner_images/static/adverst-logo.gif"/></a></div>
<p style="margin:0px 0px 0px 0px; padding:0px 0px 0px 0px;">
<a href="http://ro.plus1.wapstart.ru/index.php?area=redirector&type=1&rsId=firm1_972941 605af8978e90f11a6647717cd9498d7a37&site=563&unique Plus1UserId=e52706061d1831c7ea040e0984e5503a5a396f 93" style="color: #0e3fcc; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; text-decoration:underline;">ппц текст 1</a>
<br />
<span style="color: #000000; line-height:11px; margin:0px 0px 0px 0px; padding:4px 0px 3px 0px;">Цена 10 руб/мин! МТС Билайн Мегафон</span>
</p>
</div>
<img src="http://ro.plus1.wapstart.ru//?area=counter&clientSession=15d1845489238a3b5c971c 1336cfbcc49e0e85be&bannerId=6593&site=563" alt="" style="display: none; position:absolute;"/>
<div style="background-color: #ffffff; border: solid 1px #ffffff; padding:5px 5px 0px 5px; margin:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif;">
<p style="margin:0px 0px 0px 0px; padding:0px 0px 0px 0px;">
<a href="http://ro.plus1.wapstart.ru/index.php?area=redirector&type=1&rsId=firm1_2d07b1 3974ab8e2a5848d912c6f12bf2013b7136&site=563&unique Plus1UserId=e52706061d1831c7ea040e0984e5503a5a396f 93" style="color: #0e3fcc; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; text-decoration:underline;">ппц текст 2 </a>
<br />
<span style="color: #000000; line-height:11px; margin:0px 0px 0px 0px; padding:4px 0px 3px 0px;">Цена 10 руб/мин! МТС Билайн Мегафон1</span>
</p>
</div>
lflflflf
fdgfsgfsdg
sdgsfdgsdg
dsgsdgdsfg
';
preg_match_all('#(<div.*<p.*</div>)#Uis', $string, $res);
print_r ($res[0][0]);
print_r ($res[0][1]);
?>
Спасибо огромное :)
Я просто регулярное выражение не мог составить
Pashkela
26.02.2010, 21:57
не-не-не, подправил предыдущий пост
не-не-не, подправил предыдущий пост
я так и сделал :)
Pashkela
26.02.2010, 22:02
там другая децл регулярка
там другая децл регулярка
да я заметил :D
Я просто шаблон составить не мог.
Огромное спасибо тебе :)
Dark_cracker
27.02.2010, 01:11
есть файл с записями
site: site.ru
name: user
pass: 0c4a8asdwef83b8dbabab72f02ebe51
site: site.biz
name: admin12
pass: 61234acc960f3a570897e1172e5e2481
написал такую регулярку
preg_match_all('#pass: (.*){32}#is',$file,$log);
она выдерает всё подрят (( как мне сделать чтоб она тока 32 символа выдрала из каждой строки ???
1 s (PCRE_DOTALL)
Если данный модификатор используется, метасимвол "точка" в шаблоне соответствует всем символам, включая перевод строк. Без него - всем, за исключением переводов строк. Этот модификатор эквивалентен записи /s в Perl. Класс символов, построенный на отрицании, например [^a], всегда соответствует переводу строки, независимо от наличия этого модификатора.
2 * - ниль или больше а {} - колво повторений ты так сказать запутал регулярку та ещё и не в том месте фигурные скобки поставил ... они должны идти после того спец символа который будет повторятся =)
preg_match_all('#pass: (.{32})#i',$file,$log);
может так?
Pashkela
27.02.2010, 01:31
если речь о md5 hash
preg_match_all('|[a-f0-9]{32}|is',$file,$log);
Есть файл в html, мне нужно выделить строки в которых встречается код "ei"
выделяю - .*"ei".*
А теперь мне нужно удалить все строки кроме указаных выше. Сколько перечитал нигде не могу найти как это сделать, помогите знатоки.
Помогите составить регулярку. Мне нужно распарсить со страницы номера телефонов:
<br />(4932) 49-02-45, 45-51-07<br />
<br />49-02-45, 45-51-07<br />
<br />(4932) 490-245, 455-107<br />
<br />490-245, 455-107<br />
Это 4 разных примера встречающихся на страницах. Пытался выдернуть с помощью:
|/\((\d{3,5})\)\s+(\d{2}-\d{2}-\d{2})/|is
Но толку нет. Поскажите.
Komyak
<?php
$text="<br />(4932) 49-02-45, 45-51-07<br />
<br />49-02-45, 45-51-07<br />
<br />(4932) 490-245, 455-107<br />
<br />490-245, 455-107<br />";
echo strip_tags($text);
?>
Compton, нужна именно регулярка. Я указал примеры между тегами <br/>, так номера всегда расположены между ними- а strip_tags все теги но оставит кучу мусора в виде стороннего текста.
Compton, нужна именно регулярка. Я указал примеры между тегами <br/>, так номера всегда расположены между ними- а strip_tags все теги но оставит кучу мусора в виде стороннего текста.
Держи - /(?!:\A|\s)(?!(\d{1,6}\s+\D)|((\d{1,2}\s+){2,2}))(( (\+\d{1,3})|(\(\+\d{1,3}\)))\s*)?((\d{1,6})|(\(\d{ 1,6}\)))\/?(([ -.]?)\d{1,5}){1,5}((\s*(#|x|(ext))\.?\s*)\d{1,5})?(?! :(\Z|\w|\b\s))/gm - только без запятых выдернет. :( - вместо смайла, ну ты понял :)
регулярки за 100500 строк
Komyak,добавь перед первым < /br> еще тег и после последнего < /br>,допусти это <p> и </p>
потом вот так preg_match('/<p>(.*)<\/p>/',$text,$m); echo strip_tags($m[1]);
<span style="color:#777777;"><a class='addAudioLink' href="" onclick="addAudio(this, {act:'a_add',add:1,gid:0,aid:73997023,oid:66812379 ,hash:'4284ff74a2fa5248ba79500ef5f9388c'});return false;">Добавить</a></span>
Как из этой строки вытащить aid, oid и hash?
import re
h = """<span style="color:#777777;"><a class='addAudioLink' href="" onclick="addAudio(this, {act:'a_add',add:1,gid:0,aid:73997023,oid:66812379 ,hash:'4284ff74a2fa5248ba79500ef5f9388c'});return false;">Добавить</a></span>"""
j = re.search("aid:(?P<aid>\d+),oid:(?P<oid>\d+) ,hash:'(?P<hash>\w+)'", h)
print j.groups()
('73997023', '66812379', '4284ff74a2fa5248ba79500ef5f9388c')
Или вот так на Perl:
#!/usr/bin/perl
$h = <<EOF;
<span style="color:#777777;"><a class='addAudioLink' href="" onclick="addAudio(this, {act:'a_add',add:1,gid:0,aid:73997023,oid:66812379 ,hash:'4284ff74a2fa5248ba79500ef5f9388c'});return false;">Добавить</a></span>
EOF
$h =~ /aid:(\d+),oid:(\d+) ,hash:'(\w+)'/;
print "aid: $1\n";
print "oid: $2\n";
print "hash: $3\n";
aid: 73997023
oid: 66812379
hash: 4284ff74a2fa5248ba79500ef5f9388c
С PHP знаком плохо, но:
<?php
$s = <<<EOF
<span style="color:#777777;"><a class='addAudioLink' href="" onclick="addAudio(this, {act:'a_add',add:1,gid:0,aid:73997023,oid:66812379 ,hash:'4284ff74a2fa5248ba79500ef5f9388c'});return false;">Добавить</a></span>
EOF;
preg_match_all("/aid:(?<aid>\d+),oid:(?<oid>\d+) ,hash:'(?<hash>\w+)'/", $s, $m);
echo "<p>aid: " . $m["aid"][0] . "</p>";
echo "<p>oid: " . $m["oid"][0] . "</p>";
echo "<p>hash: " . $m["hash"][0] . "</p>";
?>
aid: 73997023
oid: 66812379
hash: 4284ff74a2fa5248ba79500ef5f9388c
чёт не выходит.. пробую на php сделать...
<?php
$string = "<span style='color:#777777;'><a class='addAudioLink' href='' onclick='addAudio(this, {act:'a_add',add:1,gid:0,aid:73997023,oid:66812379 ,hash:'4284ff74a2fa5248ba79500ef5f9388c'});return false;'>Добавить</a></span>";
preg_match_all("/aid:(\d+),oid:(\d+) ,hash:'(\w+)'/", $string, $arr);
echo $arr;
?>
в чём проблема?
чёт не выходит.. пробую на php сделать...
Обновил предыдущий пост.
echo $arr;
в чём проблема?
Проблема в тебе, т.к. функция возвращает array
<?php
$str = <<<HTML
<span style="color:#777777;"><a class='addAudioLink' href="" onclick="addAudio(this, {act:'a_add',add:1,gid:0,aid:73997023,oid:66812379 ,hash:'4284ff74a2fa5248ba79500ef5f9388c'});return false;">Добавить</a></span>
HTML;
if(preg_match('#gid:(\d+),aid:(\d+),oid:(\d+)#',$s tr,$m))
print_r($m);
?>
programming
08.03.2010, 17:39
Есть сайт. http://v-ctile.ru/
Под каждым дизайном есть кнопка "получить". При нажатии на неё выдаётся "Отправьте SMS-сообщение 838610 на номер 7122". Вот нужно спарсить 838610.
Спасибо.
Есть сайт. http://v-ctile.ru/
Под каждым дизайном есть кнопка "получить". При нажатии на неё выдаётся "Отправьте SMS-сообщение 838610 на номер 7122". Вот нужно спарсить 838610.
Спасибо.
8..... - держи, выдерет любое шестизначное чило начинабщееся с восьми
programming
08.03.2010, 18:53
8..... - держи, выдерет любое шестизначное чило начинабщееся с восьми
Я вообще не могу понять даже откуда выдирать. Я так понимаю, что это окно JS..
Вопрос решён!!!
8..... - держи, выдерет любое шестизначное чило начинабщееся с восьми
Вообщето данное выражение будет выдирать все подрят начиная с "8" длинною 6 символов, это может быть что угодно- пробел, символы, числа и тд.
Вообщето данное выражение будет выдирать все подрят начиная с "8" длинною 6 символов, это может быть что угодно- пробел, символы, числа и тд.
Благодарю за дополнение.
Помогите разобраться с регуляркой
$upd = curl_init();
curl_setopt($upd, CURLOPT_URL, "http://".$user['url']);
curl_setopt($upd, CURLOPT_RETURNTRANSFER, 1);
$ress = curl_exec($upd);
curl_close($upd);
$ress = preg_replace('#(<meta name="description" content=")(.*)(">)#iU','$2',$ress);
echo $ress;
Нужно ,чтобы вывело то, что режется регуляркой .
А выводится то , что режется регуляркой и сам сайт.
Дак вот, как сделать так, чтобы выводилось ТОЛЬКО, то , что режется регуляркой ?
т.к. $ress является массивом,то нужно выводить его индекс
т.к. $ress является массивом,то нужно выводить его индекс
Спасибо :)
Теперь возник другой вопрос, уже 1.2 часа сижу "мозги" ломаю
Как вырезать из этой строки
http://www.google.ru/search?hl=ru&source=hp&q=antichat.ru&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=
что бы вернуло antichat.ru
Пробовал так
$a = preg_replace('#(&q=)(.*)(&b)#iU','$2',$a);
echo $a;
:(
Senap
<?php
$text="http://www.google.ru/search?hl=ru&source=hp&q=antichat.ru&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=";
preg_match('/q=(.*)&btnG/',$text,$m);
echo $m[1];
?>
UPD:
('#(&q=)(.*)(&b)#iU','$2',$a);
echo $a;
1. Название переменной не может быть цифровым
2. Я же сказал,что нужно индекс выводить
$pat ='#href=\"(/lv/work/are-required/today/page\d\.html)\"#is';
preg_match_all($pat,$string,$poc);
Проблема следующая
при поиске на совпадение линков
может быть 2 варианта
1) lv/work/are-required/today/page2.html
2) lv/work/are-required/today/
Вопрос как найти 2 вариант ипользую регулярку .
есть оператор альтернативы #\.txt|.doc#.
$pat ='#href=\"(/lv/work/are-required/today/page\d\.html)\"#is';
preg_match_all($pat,$string,$poc);
Проблема следующая
при поиске на совпадение линков
может быть 2 варианта
Вопрос как найти 2 вариант ипользую регулярку .
есть оператор альтернативы #\.txt|.doc#.
$pat ='#href=\"((/lv/work/are-required/today/)page\d\.html)\"#is';
preg_match_all($pat,$string,$poc);
Помогите с регуляркой для парсинга из текста MD5 хешей...
"#([a-f0-9]{32})#is" не подходит, так как определяет как хешь часть строки из символов [a-f0-9] длинной больше 32.. а мне не нужно это...
Если сделать так: "#[^a-f0-9]+([a-f0-9]{32})[^a-f0-9]+#is" то есть по бокам подставить как минимум по одному символу не из [a-f0-9], тогда не определяются хеши идущие подряд через пробел (другой символ)..
Подскажите.. :)
Попробуй регулярку
~\b([a-f0-9]{32})\b~isU
programming
23.03.2010, 13:36
Есть регулярка:
preg_match_all('/http:\/\/?([^\/]+)\//i',$url, $regs);
Выдирает из ссылки домен. Но работает она только для ссылок, домен которых оканчивается слэшем(/).
Из ссылки вида http://lenta.ru - lenta.ru не будет выдернута.
Так вот каким образом можно составить регулярку, которая выдирала бы из ссылок http://lenta.ru - lenta.ru
Причём универсальность для всех ссылок не нужна. Регулярке будут подсовываться ссылки исключительно без слэша после домена.
Есть регулярка:
preg_match_all('/http:\/\/?([^\/]+)\//i',$url, $regs);
Выдирает из ссылки домен. Но работает она только для ссылок, домен которых оканчивается слэшем(/).
Из ссылки вида http://lenta.ru - lenta.ru не будет выдернута.
Так вот каким образом можно составить регулярку, которая выдирала бы из ссылок http://lenta.ru - lenta.ru
Причём универсальность для всех ссылок не нужна. Регулярке будут подсовываться ссылки исключительно без слэша после домена.
$url = 'http://ololoshenki.lo/params/?var=val';
$parse = parse_url($url);
print_r($parse);
<?php
$url='http://www.lenta.ru';
preg_match('/http:\/\/(www\.)?(.*)/i',$url, $n);
echo $n[2];
?>
Помогите составить регулярку, чтбы в шаблоне можно было использовать php код
$this->template = preg_replace( '/\{php\}(.*?)\{\/php\}/is',eval("$1"), $this->template);
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in /var/www/system/templates.class.php(40) : eval()'d code on line 1
$this->template = preg_replace( '/\{php\}(.*?)\{\/php\}/ise',"eval('\\1')", $this->template);
$this->template = preg_replace( '/\{php\}(.*?)\{\/php\}/ise',"eval('\\1')", $this->template);
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/system/templates.class.php(40) : regexp code(1) : eval()'d code on line 1
Parse error: syntax error, unexpected $end in /var/www/system/templates.class.php(40) : regexp code(1) : eval()'d code on line 1
:(
<?php
$tpl=<<<HERE
наш пхп код (тут строка задом наперед): {php}return strrev('qwe');{/php}
<br>
а вот еще тест (дата и время): {php}return date('d.m.Y H:i:s');{/php}
HERE;
$tpl = preg_replace('/\{php\}(.*?)\{\/php\}/ise', "eval('\\1')", $tpl);
print $tpl;
?>
programming
24.03.2010, 23:02
Как составить регулярку, которая бы удаляла теги B и всё, что находится между ними?
<?php
$text='trololo <b>ololo</b>';
echo preg_replace('/<b>.*<\/b>/','', $text);
?>
programming
24.03.2010, 23:09
Спасибо.
Как сделать через .htaccess
это name.com/images/foto.gif
на name.com/foto.gif ?
RewriteRule ^(.*\.gif)$ /photo/$1
либо
RewriteRule ^photo/(.*\.gif)$ /$1
смотря, что именно нужно
Так не работает
xhtml/6.info?ip
RewriteRule ^(xhtml|html)/([0-9]+)?((\.)(([a-z]+)))?((\?)(([a-z]+)))?(/)?$ /index.php?v=$1\&mod=$5\&id=$2\&item=$9\&%{QUERY_STRING}
а, когда подставляю точку
RewriteRule ^(xhtml|html)/([0-9]+)?((\.)(([a-z]+)))?((\.)(([a-z]+)))?(/)?$ /index.php?v=$1\&mod=$5\&id=$2\&item=$9\&%{QUERY_STRING}
xhtml/6.info.ip
Всё работает :confused:
и как еще сделать, чтобы нельзя было обратиться по такому адресу?
xhtml/?mod=info&id=6&item=ip
Помогите :(
есть скрипт,
парсит значения полей icq и майл.
<?php
set_time_limit(0);
for($i=5000000; $i>1; $i--) {
$res = file_get_contents('http://*************'.$i);
preg_match('#<b>ICQ</b>: (.*?)<br />#i', $res, $m);
$icq = (isset($m[1])) ? $m[1]."\r\n" : '';
if($icq) {$fp = fopen('i.log', 'a'); fwrite($fp, $i.':'.$icq);}
preg_match('#<b>E-mail</b>: (.*?)<br />#i', $res, $m);
$mail = (isset($m[1])) ? $m[1]."\r\n" : '';
if($mail) {$fp = fopen('m.log', 'a'); fwrite($fp, $i.':'.$mail);}
}
?>
вопрос, какие должны быть значения preg_match
если нужно парсить в html коде:
1)
< t=имя Вася;>
(нужно выпарсить слово "Вася")
&; text=пошел гулять;>
(нужно выпарсить слово "пошел гулять"
но с учетом этого "&; text=", т.к если парсить просто по "text=" то в коде другие ненужны поля есть
)
InfectedM
28.03.2010, 00:12
подскажите плиз!
есть текст:
nserver: qwe1.server.ru.
nserver: qwe2.server.ru.
mail: server.ru
site: server.ru
Нужно найти все nserver тоесть:
qwe1.server.ru.
qwe2.server.ru.
вот что накатал:
RegExp.Expression := 'nserver:\s(.*)\.[a-zA-z]*\.[a-zA-Z]{2,5}(.+?)\.';
Просьба указать ошибку в моем примере ,а не писать свою,ибо нужно разобраться :)
Ps после \s нужно ставить звездочку или \s ищет любое кол-во пробелов?
InfectedM, На PHP это выглядит примерно так:
<?php
$text = 'nserver: qwe1.server.ru.
nserver: qwe2.server.ru.
mail: server.ru
site: server.ru';
preg_match_all('~nserver: (.*)~i', $text, $regs);
print_r($regs[1]);
?>
Твой вариант впринципе почти правильный, но :
Зачем перед последней точкой нужно (.+?) ?
Почему домен третьего уровня может быть из любых символов, а первого и второго из [a-zA-Z] ?
Обязательно ли домен должен быть из трёх уровней?
P.S. Если хочешь разобраться - почитай книжки или статьи по регуляркам
InfectedM Ошибка из-за (.+?)\. Имя домена верхнего уровня (в данном случае .ru) входит в предыдущую подмаску. .+ забирает любое количество символов (кроме символа перевода строки) , но не менее одного, а дальше регулярка пытается найти обычную точку и не может
на сайте есть реальная дирктория, например /forum/, как сказать мод-реврайту, чтобы он не обрабатывал этот конкретный урл?
Гляньте в сторону флага F
как сделать чтобы логины записывались в 1й массив, а пароли во 2й
логин1:пароль1
логин2:пароль2
логин3:пароль3
както так.. но не работает :(
$login = split("#:(.*?)\n#", $text);
$pass = split("#\n(.*?):#", $text);
<?php
$text='логин1:пароль1
логин2:пароль2
логин3:пароль3';
preg_match_all('/(.*):(.*)/i',$text,$a);
print_r($a[1]);/// 1-логин,2-пароль
?>
http://paste2.org/p/747648
надо выпарсить value и текст исключительно из
<select name="cid" onChange="checkRubr(this.value,'sel2');">
...
..
.
</select>
поэтому вариант типа: #<option value="([0-9]+)">(.*+)#i
не подойдет.
Wolf
<?php
$text='<option value="10">гостинки
<option value="11">1-комн. кв.
<option value="12">2-комн. кв.
<option value="13">3-комн. кв.' ;
preg_match_all('/<option value="(.+)">.+\r\n/',$text,$a);
print_r($a);
?>
-=lebed=-
31.03.2010, 15:47
Вопщем нужно сделать два сайта (вит.хоста) на одном IP. Стоит nginx+Fast-cgi+ssl
как правильно настроить Rewrite в конфиге nginx?
Нужно сделать так, что при любом http запросе к любому домену кидало в корни сайтов на скрипты redir.php, а от туда уже идёт переадресация по https протоколу на корневые индексы сайтов (index.php)
Чтоб было яснее привожу конфиг:
user www-data;
worker_processes 4;
worker_rlimit_nofile 32768;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
limit_zone one $binary_remote_addr 10m;
limit_conn one 5;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 60;
tcp_nodelay on;
gzip on;
server {
listen 80;
server_name site_name1;
fastcgi_intercept_errors on;
access_log /var/log/nginx/site_name1.access.log;
location / {
root /var/www;
#if (!-f $request_filename){
#if ($request_uri !~ google)
#rewrite ^.*$ /redir.php ;
#break;
#}
rewrite ^.*$ /redir.php ;
index index.html index.htm index_x.php index.php;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
#redirect /redir.php$ /.php
rewrite ^.*$ /redir.php;
#if ($request_uri !~ google)
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index redir.php;
fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;
fastcgi_param HTTPS on;
include /etc/nginx/fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
server {
listen 80;
server_name site_name2;
fastcgi_intercept_errors on;
access_log /var/log/nginx/site_name2.access.log;
location / {
root /var/www/site_name2;
#if (!-f $request_filename){
#if ($request_uri !~ google)
#rewrite ^.*$ /redir.php;
#break;
#}
rewrite ^.*$ /redir.php;
index index.html index.htm index_x.php index.php;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/site_name2;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
#redirect /redir.php$ /.php
rewrite ^.*$ /redir.php ;
#if ($request_uri !~ google)
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index redir.php;
fastcgi_param SCRIPT_FILENAME /var/www/site_name2/$fastcgi_script_name;
fastcgi_param HTTPS on;
include /etc/nginx/fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
server {
listen 443;
server_name site_name1;
##
ssl on;
ssl_certificate cert.crt;
ssl_certificate_key cert.key;
ssl_session_timeout 5m;
#
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSL v2:+EXP;
ssl_prefer_server_ciphers on;
#
fastcgi_intercept_errors on;
access_log /var/log/nginx/site_name1.access.log;
location / {
root /var/www;
index index.html index.htm index_x.php index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
server {
listen 443;
server_name site_name2;
##
ssl on;
ssl_certificate cert.crt;
ssl_certificate_key cert.key;
ssl_session_timeout 5m;
#
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSL v2:+EXP;
ssl_prefer_server_ciphers on;
#
fastcgi_intercept_errors on;
access_log /var/log/nginx/site_name2.access.log;
location / {
root /var/www/site_name2;
index index.html index.htm index_x.php index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/site_name2/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
}
Щас в принципе почти всё работает, но в одном случае при запросе http://site_name2 редиректит на https://site_name2/site_name2
При запросе http://site_name2/бла-бла-бла любое - работает всё верно, т.е. выходим на http://site_name2/redir.php и там уже на пыхе редирект на https. Подскажите где косяк?
И второй вопрос: возможно ли сделать так чтоб вирт-хотсты на nginx работали по https с разными сертификатами и ключами?
Wolf
<?php
$text='<option value="10">гостинки
<option value="11">1-комн. кв.
<option value="12">2-комн. кв.
<option value="13">3-комн. кв.' ;
preg_match_all('/<option value="(.+)">.+\r\n/',$text,$a);
print_r($a);
?>
поэтому вариант типа: #<option value="([0-9]+)">(.*+)#i
не подойдет.
у меня еще полно selecto'ov
Vlad&slav
03.04.2010, 22:22
Wolf
<?php
$text='
<select name="select">
<option value="dfcgh">dft</option>
<option value="fgb">dfghb</option>
<option value="fgh">f</option>
</select>
1.
<select name="cid" onChange="checkRubr(this.value,\'sel2\');"><option value="10">гостинки
2.
<option value="11">1-комн. кв.
3.
<option value="12">2-комн. кв.
4.
<option value="13">3-комн. кв.
5.
<option value="14">4-комн. кв.
6.
<option value="15">5-комн. кв.
7.
<option value="16">6-комн. кв.
8.
<option value="20">дома, коттеджи, дачи
9.
<option value="25">за рубежом
10.
<option value="30">земельные участки
11.
<option value="40">коммунальные квартиры
12.
13.
<option value="50">подселение
14.
<option value="60">помещения
15.
<option value="0">прочее
16.
</select><br><br>
<select name="select">
<option value="dfcgh">dft</option>
<option value="fgb">dfghb</option>
<option value="fgh">f</option>
</select>
<select name="select">
<option value="dfcgh">dft</option>
<option value="fgb">dfghb</option>
<option value="fgh">f</option>
</select>
';
$m = explode('select', $text);
foreach($m as $v) if(strstr($v, 'name="cid"')) $text = $v;
preg_match_all('/<option value="(.+)">.+\r\n/',$text, $a);
print_r($a);
?>
mazaxaka
08.04.2010, 02:26
Парни появился еще вопрос по perl
авторизировался на сайте но нужно спарсить некоторые данные Например как в вк друзей и рейтинг. что то не как не пойму как ето сделать. подскажите пожалуста
вот блок с которого нужно спарсить
красным пометил даные которые нужно спарсить. уже пол дня пробую и нефига(
<div id="userInfoBlock">
<div id="moneyInfo">
<a id="moneyIco" title="Количество <b>Мани</b> в твоем кошельке" href="http://сайт/">
<span></span>0.<small>04</small> </a>
вот тут число состоит из 2
</div>
<div id="votesInfo">
<a id="votesIco" title="Твои голоса" href=сайт">
<span class="ico"></span><span id="votesInfoCount">0</span>
</a>
</div>
$text =~ /<div id="moneyInfo">.*?<span><\/span>(\d+\.)<small>(\d+)<\/small>.*?<\/div>/smi;
my $first = $1 . $2;
print $first, "\n";
my ($second) = $text =~ /<span id="votesInfoCount">(\d+)<\/span>/;
print $second, "\n";
0.04
0
mazaxaka
08.04.2010, 13:43
еще 1 вопросик по парсингу
пробывал как показала товарищ krypt3r
но тут так не получается
</div>
<h3>
<a href="http://сайт/user/267752/friends/">Друзья (92)</a>
</h3>
попробовал вот так. но не получается
my ($friend) = $resp =~ /friends/>(\d+)<\/span>/;
preg_match('/<div><h2>Друзья <span>\((.*)\)<\/span><\/h2><\/div>/', $result, $res);
я так понял,что тебе нужно подсчитать кол-во друзей вк
я уже написал (http://gifts.hdd1.ru/?p=50) )
Vlad&slav
08.04.2010, 23:22
preg_match('/<div><h2>Друзья <span>\((.*)\)<\/span><\/h2><\/div>/', $result, $res);
я так понял,что тебе нужно подсчитать кол-во друзей вк
я уже написал (http://gifts.hdd1.ru/?p=50) )
я думаю ему на перле надо
=~ /Друзья <span>\((.*)\)<\/span>/;
будьте проще
mazaxaka
09.04.2010, 13:22
я думаю ему на перле надо
=~ /Друзья <span>\((.*)\)<\/span>/;
будьте проще
благодарю.
да именно на перле..
хм.. почему то постоянно оишбка при попытке сохранить или показать значение ошибка Use of uninitialized value in concatenation (.) or string at
<a\s+href="http:\/\/.+?\/friends\/">Друзья\s*\((\d+)\)<\/a>
Я никогда не работал с mod_rewrite, поэтому не могу понять одну хрень:
RewriteEngine on
Options +FollowSymLinks
RewriteRule ^id/(.*)$ /product.php?id=$1
мне нужна вот такая вещь, всё конечно работает, но ссылки у меня на странице вида
<a href="link.php"></a>
и оно преобразовывает их к
<a href="http://hostname.ru/id/link.php"></a>
а нужно
<a href="http://hostname.ru/link.php"></a>
mazaxaka
09.04.2010, 19:35
<a\s+href="http:\/\/.+?\/friends\/">Друзья\s*\((\d+)\)<\/a>
мой код
my ($frend) = $resp =~ <a\s+href="http:\/\/.+?\/friends\/">Друзья\s*\((\d+)\)<\/a>;
вылазят ошибки
Unrecognized escape \s in character class passed through at
unrecognized character \xC4 in column 59 at
~ |<a\s+href="http:\/\/.+?\/friends\/">Друзья\s*\((\d+)\)<\/a>|;
mazaxaka
09.04.2010, 20:34
~ |<a\s+href="http:\/\/.+?\/friends\/">Друзья\s*\((\d+)\)<\/a>|;
мой код
my ($frend) = $resp =~ |<a\s+href="http:\/\/.+?\/friends\/">Друзья\s*\((\d+)\)<\/a>|;
ошибки
syntax error at , near "=~|"
unrecognized character \xC4 in column 61 at 61 ето между > и Друзья
Кодировку получаемой страницы проверьте
mazaxaka
10.04.2010, 17:02
кодировка как и везде. (вроде) как точно проверить так и не понял
кодировка как и везде. (вроде) как точно проверить так и не понял
открой код страницы там будет в самом начале
mazaxaka
10.04.2010, 18:19
windows-1251 кодировка там
Есть что то типа
elseif((!preg_match("!^[a-z1-9@\\*\\)\\(\\?\\!\\-_\\]\\[=~]+$!i",$user))) {вывод о не верном вводе}
Надо из этого как то получить что бы юзер мог быть и русскими символами и латинскими, но только что бы либо то либо другое, что бы нельзя было мешать букВаВки.
поДмогите кто чем может, уже хз скок сижу над этим
xNPC
if(preg_match('/[a-z]|[а-я]/i',$open))
xNPC
if(preg_match('/[a-z]|[а-я]/i',$open))
Делал так же, но почему то не работало (
Pashkela
11.04.2010, 18:31
if ( (preg_match('/[a-z]/i,$open)) && (preg_match('/[а-я]/i,$open)) echo "olololo! Don't meshat niki, no plz!";
это к вопросу о смешанных никах (русс/англ). Остальное долго курил, вообще не понял вопроса
Собственно выслушал всех, вот что получил:
elseif........
elseif ( (preg_match('/[a-z]/i',$user)) && (preg_match('/[а-я]/i',$user)))
{$msg = "Ник содержит запрещенные знаки!";}
elseif (!preg_match("!^[абвгдежзийклмнопрстуфхцчш щъыьэюяАБВГДЕЖЗИЙКЛМНОПРС ТУФХЦЧШЩЪЫЬЭЮЯa-z1-9@\\*\\)\\(\\?\\!\\-_\\]\\[=~]+$!i",$user))
{$msg = "Ник содержит запрещенные знаки!";}
elseif...
Как то вот так, и все нормально робит xD
з.ы. с русскими буквами глюки, если их проверяешь в отдельном выражении от латыни то принимает "а-яi", а если в одном то приходится весь алфавит в нижнем и верхнем регистре писать, мб кто то подскажет как избавиться от этого
++Norton++
11.04.2010, 22:51
Есть среди прочей лабуды на странице такое сочетание:
всякий разный текст... += "123456"; всякий разный текст...
Где "всякий разный текст" - это текст, он меняется и тд.
+="123456" - остается постоянным, т.е. 123456 может меняться, но "+=" есть всегда.
Нужно из такой страницы взять значения после += которые идут в кавычках. Т.е. только значения. В данном случае 123456.
Заранее спасибо!
preg_match('/\+=\s?"(.+)";/',$text, $res);
Проблема при проверки имени пользователя.
Имя пользователя может быть как на латинице так и на киррилице.
При использование Кирилицы (русского) выдает ошибку.
Вот код
function name_check($name){
$name = trim($name);
if (strlen($name) >= 3){
if (strlen($name) <= 60){
if (preg_match("([^а-яА-Яa-zA-Z-]+)",$name)) {
$err = 1;
}
else {
$err = 0;
}
} else $err = 2; //очень длинный логин
} else $err = 3; //очень короткий логин
return $err;
}
Как исправить?
Проблема при проверки имени пользователя.
Имя пользователя может быть как на латинице так и на киррилице.
При использование Кирилицы (русского) выдает ошибку.
Вот код
function name_check($name){
$name = trim($name);
if (strlen($name) >= 3){
if (strlen($name) <= 60){
if (preg_match("([^а-яА-Яa-zA-Z-]+)",$name)) {
$err = 1;
}
else {
$err = 0;
}
} else $err = 2; //очень длинный логин
} else $err = 3; //очень короткий логин
return $err;
}
Как исправить?
<?php
function name_check($name){
$name = trim($name);
if (strlen($name) >= 3){
if (strlen($name) <= 60){
if (preg_match("#^([а-яА-Яa-zA-Z\-]+)$#",$name)) {
$err = 1;
}
else {
$err = 0;
}
} else $err = 2; //очень длинный логин
} else $err = 3; //очень короткий логин
return $err;
}
echo name_check('Василий');
?>
=/
есть строка вида
<a clas="..." href="...">info</a>, <a clas="..." href="...">info2</a>, <a clas="..." href="...">info3</a>,........
нужно выдрать все между тегами <a></a> конструкция будет одинакова
preg_match('#">(.*?)<\/a>#',$in,$out);
, как эту конструкцию повторять,??? ведь может быть и 1 повтор и 10 повторов конструкции.
2 m0Hze
У меня
echo name_check('Василий'); //равно 1,т.е. ошибка.
Может это из-за настроек денвера?
Или я неправильно код прочита?
Pashkela
14.04.2010, 22:06
есть строка вида
<a clas="..." href="...">info</a>, <a clas="..." href="...">info2</a>, <a clas="..." href="...">info3</a>,........
нужно выдрать все между тегами <a></a> конструкция будет одинакова
preg_match('#">(.*?)<\/a>#',$in,$out);
, как эту конструкцию повторять,??? ведь может быть и 1 повтор и 10 повторов конструкции.
preg_match_all?
2 m0Hze:
if (preg_match("#^([а-яА-Яa-zA-Z\-]+)$#",$name)) {
есть такой модификатор - "i"
есть такой модификатор - "i"
Не могу найти его.
Символ "i" после закрывающего ограничителя шаблона означает регистронезависимый поисК?
Сейчас приведу код с комментариями,скажите я правильно его понял?
function name_check($name){
$name = trim($name);
if (strlen($name) >= 3){
if (strlen($name) <= 60){
if (preg_match("/^([а-яa-z\-]+)$/i",$name)) {
print_r(preg_match("/^([а-яa-z\-]+)$/i",$name));
$err = 1; // ошибка:используются неразрешенные символы
}
else {
$err = 2; // всё супер,используються разрешенные символы
}
} else $err = 3; //очень длинное имя
} else $err = 4; //очень короткое имя
return $err;
}
Pashkela
14.04.2010, 22:35
Да, но твою проблему это не решит, т.к. ты совершенно не владеешь русским языком и даже не можешь нормально сформулировать вопрос, а именно - донести, что вообще требуется от скрипта без своих мегаговнокодов, просто спросить, типо "хочу, чтобы ....., как сделать"
Твоё "Как исправить?" никак не упрощает ситуацию
PS: Если ми правильно протелепатировал - последний пост предыдущей страницы, иногда читать надо не только свои вопросы
2 Pashkela
Я хочу чтобы скрипт проверил состоит ли имя пользователя из
Русских Английски букв и тире "-".
Ну то есть,чтобы принимал Русские , Ангийские имена и имена которые пишутся через дефис "-".
"Ван-Дер-Ваальс",но в то же время,чтобы имя нельзя было сделать из одних символов "-"
Старался как мог.
Deathdreams
14.04.2010, 22:55
есть строка вида
<a clas="..." href="...">info</a>, <a clas="..." href="...">info2</a>, <a clas="..." href="...">info3</a>,........
нужно выдрать все между тегами <a></a> конструкция будет одинакова
preg_match('#">(.*?)<\/a>#',$in,$out);
, как эту конструкцию повторять,??? ведь может быть и 1 повтор и 10 повторов конструкции.
preg_match_all, не?
Pashkela
14.04.2010, 23:32
2 Pashkela
Я хочу чтобы скрипт проверил состоит ли имя пользователя из
Русских Английски букв и тире "-".
Ну то есть,чтобы принимал Русские , Ангийские имена и имена которые пишутся через дефис "-".
"Ван-Дер-Ваальс",но в то же время,чтобы имя нельзя было сделать из одних символов "-"
Старался как мог.
Вот теперь ТЗ понятное и вопросов не вызывает:
1. Можно Русские символы
2. Можно Английские символы
3. Нельзя спец-символы (кроме тире)
4. Нельзя одни только "-"
5. Нельзя смесь русских и английских буковок
6. Регистр любой (в любой месте ника)
7. Длина ника от 3 до 60 символов
<?php
$a = "Куку";
if (!preg_match('#[^а-яА-Яa-z\-]#i',$a) && preg_match('#[а-яА-Яa-z]#i',$a) && !(preg_match('#[а-яА-Я]#',$a) && preg_match('#[a-z]#i',$a)) && strlen($a)>=3 && strlen($a)<=60) echo "Ok";
else echo "Error";
?>
Так как это раздел, где вопросы для новичков,то решил спросить,а то понять не могу.И нигде не написано про "#"
Чем отличается
preg_match('#[^а-яА-Яa-z\-]#i',$a)
от
preg_match('/[^а-яА-Яa-z\-]/i',$a)
И вообще я до сих пор не понял,как работает preg_match.
Можете объяснить?
+ добавлено скрпит Пашкелы пропускает имена типа "-ыв-фы-вфыв---фыв--",что не есть хорошо.
Попробывал так,но не сработало.
[^а-яА-Яa-z\-?]
Я понимаю,что регулярка понимает это как полседовательность
от "\" до "?" ?
если ставить '#' то не придется ставить '\' перед '/'
<td class="bold">Описание:</td>
</tr>
<tr class="infoRow">
<td>Фрэнк Пеш рoдился под счастливой звeздой. Всю жизнь oн не вeдал пoражeний ни в любви, ни в уличных рaзбoрках, ни зa игoрным столом. А так кaк Фрэнк был итальянцем и жил в Нью-Йорке, жизнь постoянно прeдоставляла ему шанс проверить свою удачливость на практике. В этой гангстерской комедии есть все: смех и слезы, любовь и ненависть. Перед вашими глазами на протяжении нескольких десятилетий разворачивается история семьи Пеш со всеми ее горестями и радостями, прекрасные актерские работы не оставят равнодушными даже самого взыскательного зрителя.</td>
</tr>
<tr class="infoRow2">
<td class="bold">В главных ролях:</td>
</tr>
<tr class="infoRow">
<td><a href="actor.php?name=%D0%94%D1%8D%D0%BD%D0%BD%D0%B8%20%D 0%90%D0%B9%D0%B5%D0%BB%D0%BB%D0%BE">Дэнни Айелло</a>, <a href="actor.php?name=%D0%AD%D0%BD%D1%82%D0%BE%D0%BD%D0%B 8%20%D0%9B%D0%B0%20%D0%9F%D0%B0%D0%BB%D1%8C%D1%8F">Энтони Ла Палья</a></td>
</tr>
как правильно отпарсить описание??
В общем я написал наконец нормальную проверку имени.
Спасибо Pashkela за код.
В общем функция для проверки имени полязователя на валид ( правильность , валидность )
if (!preg_match('#-{2,}#',$a) && //нет двух подряд тире
preg_match_all('#-#',$a,$m1)<3 && //И в строке меньше 3 тире,т.е. 1 или 2
!preg_match('#(^-|-$)#',$a) && //И нет тире в начале или конце
!(preg_match('#[а-яА-Я]#',$a) && preg_match('#[a-z]#i',$a)) && //И не используються сразу англ и русские символы
!preg_match('#[^а-яА-Яa-z\-]#i',$a) && //И не используються знаки кроме разрешенных {"а-я" "А-Я" "a-z" "A-Z" и "-"}
strlen($a)>=3 && //И имя длиннее 3 символов
strlen($a)<=30 //И имя короче 30 символов
)echo "Ok";
else echo "Error<br>";
Еще Можно объядинить эти две строки
!preg_match('#-{2,}#',$a)
!preg_match('#(^-|-$)#',$a)
В
preg_match('#-{2,}|(^-|-$)#',$a,$m1);
как правильно отпарсить описание??
preg_match('/<td>(.+)<\/td>/',$text,$a);
preg_match('/<td>(.+)<\/td>/',$text,$a);
такой регуляркой помимо описания ты еще кучу чего зацепишь
спс.но я уже разобрался )
Vlad&slav
17.04.2010, 00:01
svesve
preg_match('/\"infoRow\">[^<]*<td>(.+)<\/td>/',$text,$a);
InfectedM
17.04.2010, 17:23
....a class="cs" tabindex="2" href="http://www.qwerty.com/ololol" onmousedown="rc(this, '\/\/clck.yandex.ru\/redir\/......
....a class="cs" tabindex="2" href="http://www.darkraha.com/rus/ajax/ajax03.php" onmousedown="rc(this, '\/\/clck.yandex.ru\/redir\/ href="http://www.zxc.eu/eng/......<table>......
нужно вырезать ссылки
www.qwerty.com
www.darkraha.com
Подскажите как,плз
PS нужно только те ссылки каторые будут между tabindex="2" и onmousedown
Dark_cracker
18.04.2010, 12:25
нужно вырезать ссылки
www.qwerty.com
www.darkraha.com
Подскажите как,плз
preg_match_all("#href=\"http://(.*?)/.+\"#i",$a,$logs);
Как в регулярном выражении будет "И"(and) ???
programming
19.04.2010, 20:30
Подскажите пожалуйста регулярку для выдирания с сайта http://realty.dmir.ru/realty/sale/ru/mo/commerce/production/418183/ информацию по зданию и коммуникации. Нужен массив с информацией по зданию и другой массив с коммуникациями.
Спасибо.
mazaxaka
20.04.2010, 23:29
помогите с регуляркой
нужно спарсить значение , вот кусок кода от куда нужно спарсить интересует чисто которое в ()
</div>
<h3>
<a href="http://сайт/user/267752/friends/">Друзья (92)</a>
</h3>
код
my ($frend) = $resp =~/">Друзья \((\d*)\)</;
ошибка
use of uninitialized value $frend in concatenation <.> or string at lina 60
вот 60 строка
print "[ + ] [vote=$vote];[Friends=$frend]\n";
в файл тоже $frend не сохраняется
$resp =~/\"\>Друзья \((.+?)\)\<\/a\>/;
my ($frend) = $1;
print $frend;
programming
21.04.2010, 20:26
Каким образом можно выдрать всё содержимое из каждого тега <dt> и <dd> в массив?(<dt>(.*)</dt>, <dd>(.*)</dd> - неврно)
style="display:none;"><div class="colblks1"><div class="dfnslst01"><dl><dt>Электричество</dt><dd>да</dd></dl></div></div><div class="colblks1"><div class="dfnslst01"><dl><dt>Газ</dt><dd>да</dd></dl></div></div><div class="colblks1"><div class="dfnslst01"><dl><dt>Охрана</dt><dd>да</dd></dl></div></div><div class="colblks1"><div class="dfnslst01"><dl><dt>Парковка</dt><dd>да</dd></dl></div></div><div class="colblks1"><div class="dfnslst01"><dl><dt>Лифт</dt><dd>да</dd></dl></div></div><div class="colblks1"><div class="dfnslst01"><dl><dt>Водоснабжение</dt><dd>да</dd></dl></div></div><div class="colblks1"><div class="dfnslst01"><dl><dt>Канализация</dt><dd>да</dd></dl></div></div><div class="colblks1"><div class="dfnslst01"><dl><dt>Отопление</dt><dd>да</dd>
preg_match_all ('|<dt>(.*?)</dt>|', $str, $m1);
print_r ($m1[1]);
preg_match_all ('|<dd>(.*?)</dd>|', $str, $m2);
print_r ($m2[1]);
Array
(
[0] => Электричество
[1] => Газ
[2] => Охрана
[3] => Парковка
[4] => Лифт
[5] => Водоснабжение
[6] => Канализация
[7] => Отопление
)
Array
(
[0] => да
[1] => да
[2] => да
[3] => да
[4] => да
[5] => да
[6] => да
[7] => да
)
Всем привет !
Есть несколько вопросов по mod_rewrite, сегодня почитал не много документации по данному модулю, посмотрел некоторые примеры, но одну проблему уже долгое время не могу решить, да и незнаю можно ли вообще такое сделать.
Это то что на данный момент есть в .htaccess, последение правило с условиями возможно временные.
RewriteRule ^([a-z]+)/([a-z]+)/$ /$1.php?a=$2
RewriteRule ^([a-z]+)/([a-z]+)/([0-9]+)/$ /$1.php?a=$2&id=$3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /404.php [L]
По поводу первых двух правил, можно ли написать условие, которое будет проверять по первой обратной связи т.е. если $1 существует как файл, тогда и выполняется правило
Второй вопрос, есть ли возможность запретить прямой доступ к файлам php ? Т.е. только через SEO, а уже страница.php?а=что-то, никак...
Сейчас в .htaccess:
RewriteEngine On
RewriteRule ^id([0-9]*)$ /index.php?id=$1
Как сделать чтобы при переходе на адрес id1_info отправлялся гет:
/index.php?id=$1&q=info
А если без приставки инфо то следуя первой инструкции...
phpdreamer
27.04.2010, 22:59
RewriteEngine On
RewriteRule ^id([0-9]*)_info$ /index.php?id=$1&q=info
RewriteRule ^id([0-9]*)$ /index.php?id=$1
phpdreamer
27.04.2010, 23:08
Всем привет !
Есть несколько вопросов по mod_rewrite, сегодня почитал не много документации по данному модулю, посмотрел некоторые примеры, но одну проблему уже долгое время не могу решить, да и незнаю можно ли вообще такое сделать.
Это то что на данный момент есть в .htaccess, последение правило с условиями возможно временные.
RewriteRule ^([a-z]+)/([a-z]+)/$ /$1.php?a=$2
RewriteRule ^([a-z]+)/([a-z]+)/([0-9]+)/$ /$1.php?a=$2&id=$3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /404.php [L]
По поводу первых двух правил, можно ли написать условие, которое будет проверять по первой обратной связи т.е. если $1 существует как файл, тогда и выполняется правило
Второй вопрос, есть ли возможность запретить прямой доступ к файлам php ? Т.е. только через SEO, а уже страница.php?а=что-то, никак...
1)проверяй все на пхп,
2)можно, но опять же это все логика твоего пхп скрипта
Всем привет.
Как можно составить регулярное выражение в Mod_Rewrite
Чтобы
http://site.ru/?user=senap
работала так
http://senap.site.ru ?
как-то так
^?user=senap$ http://senap.site.ru
не работает :(
phpdreamer
28.04.2010, 17:49
попробуй без знака ?
или поставить перед ним \
(экранирование)
RewriteRule ^\?user=senap$ senap.localhost{QUERY_STRING} [L]
пытаюсь обратится по адресу senap.localhost
Ошибка!
Невозможно найти удалённый сервер
phpdreamer
28.04.2010, 18:02
senap.localhost - это адрес папки (нету http)
не парь мозг и сделай
if(isset($_GET['user']))
if($_GET['user'] == 'senap')
header("Location: http://www.site.ru");
senap.localhost - это адрес папки (нету http)
не парь мозг и сделай
if(isset($_GET['user']))
if($_GET['user'] == 'senap')
header("Location: http://www.site.ru");
Это уже совсем не то
Нужно чтобы это senap.site.ru преобразовало в это site.ru/?user=senap
по идеи должно рабоать это
RewriteCond %{HTTP_HOST} !^localhost
RewriteCond %{HTTP_HOST} ([^.]+).localhost
RewriteRule ^(.*)$ /var/www/index.php?s=%1
Но не работает :(
mazaxaka
28.04.2010, 20:17
<div>Общий заработок: <span>$5.03</span></div>
помошите с регуляркой. не получается спарсить иза $
Доброго времени суток помогите с парсом страницы:
То что нужно спарсить выделенно ;)
<div class="si_map_header" id="HTML_curr_map">
de_train </div>
<div class="si_map_image" id="HTML_map_ss_img">
<img src="http://image.www.gametracker.com/images/maps/160x120/cs/de_train.jpg" alt="" class="item_160x120" />
<span id="HTML_num_players">0</span> / <span id="HTML_max_players">21</span>
_________________________________________________
Буду благодарен за помощь
20ldbi4
1. /<div.+>\s+(.+)\s+<\/div>/
2. /<img src=\"(.+?)\".+>/
3. /<span id=\"HTML_num_players\">(.+?).+<span id=\"HTML_max_players\">(.+)<\/span>/
mazaxaka
29.04.2010, 11:09
хм.. все равно что то не так
<div>Общий заработок: <span>$5.03</span></div>
$resp =~ /<div>Общий заработок: <span>\$(\d+\.)(\d+)<\/span><\/div>/smi;
my ($money) = $1 . $2;
usr of ininitialized velue $1 и $2
my $str = '<div>Общий заработок: <span>$5.03</span></div>';
$str =~ /<span>(\$\d+\.\d+)<\/span>/; print $1;
mazaxaka
29.04.2010, 12:12
чтот я с етим знаком долара туплю.. пробывал екранировать все равно.
чтот я с етим знаком долара туплю.. пробывал екранировать все равно.
Символы < и > тоже надо экранировать...
my $str = '<div>Общий заработок: <span>$5.03</span></div>';
$str =~ /\<div\>Общий заработок: \<span\>\$(.+?)\<\/span\>\<\/div\>/;
print $1."\n";
Ошибка за ошибкой
Там не ошибка, там тег [php] убрал экранирование. Сделал в [code], сейчас нормально
mazaxaka
29.04.2010, 12:28
Символы < и > тоже надо экранировать...
my $str = '<div>Общий заработок: <span>$5.03</span></div>';
$str =~ /\<div\>Общий заработок: \<span\>\$(.+?)\<\/span\>\<\/div\>/;
print $1."\n";
всеравно ошибка
usr of ininitialized velue $1
к чему ето строка не понятно
my $str = '<div>Общий заработок: <span>$5.03</span></div>';
етоя привет кусок кода страници который нужно спарсить
<div>Общий заработок: <span>$5.03</span></div>
к чему ето строка не понятно
Тебе не надо её писать.. она для примера..
$str = 'код страницы с которой парсишь данные';
$str =~ /\<div\>Общий заработок: \<span\>\$(.+?)\<\/span\>\<\/div\>/g;
print $1."\n";
mazaxaka
29.04.2010, 12:48
Тебе не надо её писать.. она для примера..
$str = 'код страницы с которой парсишь данные';
$str =~ /\<div\>Общий заработок: \<span\>\$(.+?)\<\/span\>\<\/div\>/g;
print $1."\n";
все равно
usr of ininitialized velue $1
а разве +? может парсить дробные числа?
Сколько можно? Когда угловые скобки в регулярках экранироваться стали внезапно? Используй мой вариант (выше), он работает.
Доказательство: http://codepad.org/irQ7CyTx
http://s54.radikal.ru/i145/1004/d5/02a1db2f5ee6t.jpg (http://radikal.ru/F/s54.radikal.ru/i145/1004/d5/02a1db2f5ee6.png.html)
mazaxaka
29.04.2010, 12:57
у меня в коде не работает твой способ я уже проверял 100 раз
usr of ininitialized value $1 in concatenation (.) or string
mazaxaka
29.04.2010, 13:04
пробовал заменить $ точкой. всеравно ошибка при выводе значения
Сколько можно? Когда угловые скобки в регулярках экранироваться стали внезапно? Используй мой вариант (выше), он работает.
Доказательство: http://codepad.org/irQ7CyTx
http://s54.radikal.ru/i145/1004/d5/02a1db2f5ee6t.jpg (http://radikal.ru/F/s54.radikal.ru/i145/1004/d5/02a1db2f5ee6.png.html)
Упс... :rolleyes: Всю сознательную жизнь их экранировал, сейчас глянул и правда без экранирования работает... О_0 В общем я в шоке... :D
ЗЫ: кстати мой вариант тоже работает (даже без экранирования угловых), так что скорее вснго трабл где-то у ТС-а...
mazaxaka, ты уверен, что в переменной $str у тебя то, что нужно...
mazaxaka
29.04.2010, 13:22
$resp = $ua->get("http://bonus.depositfiles.com/ru/gold/bonus_program.php")->as_string;
wf($file, $resp);
$resp =~ /<a class="button_add" >Выплатить<\/a>.*?<span>.(\d+\.\d+)<\/span>/smi;
my $money = $1 . $2;
print $money ;
специально сохраняю чтобы посомтреть.. страница полность получина. все имеется . но регулярка не вырезает значение.
немного передлал . на сайте проверил работает. а у меня нет
mazaxaka, там кодировка utf-8, думаю из-за этого не пашет.. переведи "Общий заработок" из windows-1251 в utf-8, а потом подставляй в регулярку...
mazaxaka
29.04.2010, 13:44
спс . сразу кодировку и не глянул. сейчас сделаю
Кодировку и нужно было с самого начала проверять. Для чего существует команда print?
Как из ссылки вида site.ru/index.php?inc=view&id=777 site.ru/inc/view/id/777 или site.ru/view/777 или ну его нах этот чпу
есть:
index.php?mode=blabla1&act=blabla2
index.php?mode=blabla3&act=blabla2
нужно чтобы было site.com/blabla1
site.com/blabla3
XPYMGT
RewriteRule ^inc/view/id/(.+)$ index.php?inc=view&id=$1
RewriteRule ^view/(.+)$ index.php?inc=view&id=$1
M1ks
RewriteRule ^(.+)$ index.php?mode=$1&act=blabla2
<div class="si_map_image" id="HTML_map_ss_img">
]<img src="папабамс" alt="" class="item_160x120" />
</div>
Добрый день, мне нужно спарсить выделенное с учетом того что img src повторяються на странице и нужно парсить слой
<div class="si_map_image" id="HTML_map_ss_img">
]<img src="папабамс" alt="" class="item_160x120" />
</div>
Добрый день, мне нужно спарсить выделенное с учетом того что img src повторяються на странице и нужно парсить слой
preg_match_all('#<div class="si_map_image" id="HTML_map_ss_img">.+]<img src="(.*?)" alt="" class="item_160x120" />.+</div>#is',$text,$out);
2#Wolf# с ошибками! где то кавычки не экранированны где то еще что, я регулярки не разбирал... но эт знаю.. вообщем парсэррор дает эта строка.
2#Wolf# с ошибками! где то кавычки не экранированны где то еще что, я регулярки не разбирал... но эт знаю.. вообщем парсэррор дает эта строка.
$text='<div class="si_map_image" id="HTML_map_ss_img">
]<img src="папабамс" alt="" class="item_160x120" />
</div> ';
preg_match_all('#<div class="si_map_image" id="HTML_map_ss_img">.+]<img src="(.*?)" alt="" class="item_160x120" />.+</div>#is',$text,$out);
echo '<pre>';print_r($out);echo '</pre>';
->
Array
(
[0] => Array
(
[0] =>
]
)
[1] => Array
(
[0] => папабамс
)
)
у меня , как видишь ,все работает. экранируй сам кавычки.
programming
03.05.2010, 16:31
Есть сайт http://www.lacoctelera.com/login/registro
При отправке формы методом пост у переменных lt и st появляются значения.. Откуда?
Вопрос не в эту тему.
Ответ такой
по умолч там
<input type="hidden" name="lt" value="0" />
<input type="hidden" name="st" value="0" />
знач value="0"
при отссылки может меняться при помощи яваскрипта.
programming
03.05.2010, 17:44
Вопрос не в эту тему.
Ответ такой
по умолч там
<input type="hidden" name="lt" value="0" />
<input type="hidden" name="st" value="0" />
знач value="0"
при отссылки может меняться при помощи яваскрипта.
Это и понятно, что меняется яваскриптом. Уже даже определил, что этим:
<script type="text/javascript">
<!--
function unset_focus() { if (document.dataform.lt.value==0) { f=new Date(); document.dataform.lt.value=f.getTime(); } }
function enviaFormulario() { fechasubmit = new Date(); document.dataform.st.value = fechasubmit.getTime(); document.dataform.submit() }
// -->
</script>
Но как выдрать то значения?
preg_match_all('#<input type="hidden" name="(.+)" value="(.+)" />#',$text,$an);
Dark_cracker
06.05.2010, 00:47
<td><span title='текст'>текст</span></td>
<td><span title='текст'>текст</span><br><span title='текст'>текст</span></td>
можно ли регуляркой вот это спарсить ? например если есть в теге <td> после <br> тег <span> тогда из него брать если нету тогда из первого попавшегося тега <span парсить текст
написал такую "#<td>.+?<br><span title='(.*?)'>.+?</span></td>|<span title='(.*?)'>.+?</span></td>#is"
она только парсит текст из второго тега <td>
как можно в регулярку поставит переменную?
т.е.preg_match('# <td class=lettem><a href="(.*)">{$theme}</a></td>#',$result,$id);
так не получается
phpdreamer
08.05.2010, 13:09
зачем "{}" ?
preg_match('# <td class=lettem><a href="(.*)">' . $theme . '</a></td>#',$result,$id);
не работает,думаешь я не пробывал
phpdreamer
08.05.2010, 14:22
что в $theme ?
//конечно не пробовал, если пишешь херню
у меня все работает
$result = 'blablablabla <td class=lettem><a href="http://tochtonada">lol</a></td> blablablablablabla';
$theme = 'lol';
preg_match('# <td class=lettem><a href="(.*)">'
. $theme . '</a></td>#',$result,$id);
print_r($id);
теперь работает,спасибо
но уже решил по-другому
foxxx1234
09.05.2010, 00:25
подскажите как спарсить
<IMG SRC="http://cs460.vkontakte.ru/u61596318/107514257/m_abf4188e.jpg" onMouseOver="this.style.borderColor='#45688E'" onMouseOut="this.style.borderColor=''" style="max-width:130px;"></a></td>
Из этого нужно выдернуть m_abf4188e.jpg .
preg_match('#/107514257/(.*)" onMouseOver=#',$text,$a);
foxxx1234
09.05.2010, 02:05
Спасибо
А можете еще подсказать как из
<td><a href="/photo-14779259_161181650">
вытащить 161181650
$res = ' <td><a href="/photo-14779259_161181650"> ';
preg_match('#href="/photo-.+_(.*?)">#',$res,$out);
var_dump($out);
foxxx1234
10.05.2010, 02:00
Подскажите как из
<div class="summary">284 фотографии<span class="divider">
Вытащить число 284
phpdreamer
10.05.2010, 02:27
preg_match('# <div class="summary">([0-9]*) фотографии<span class="divider"> #ui',$page,$res);
echo $res[1];
mazaxaka
13.05.2010, 21:19
задача состоит в том чтобы спарсить ники юзеров с 1 сайта
вот где можно применить регулярное выражение
<a href="searchpro.aspx?author=ник юзера&top=50
<span class="subhead">ник юзера</span>
Дело состоит в том. что в ники могут использоватся цифры.буквы.все спец символы. и пробелы. простые ники я могу собрать когда дело доходит до символов пробелов и тд. у меня ничего не получается. подскажите плз
а также логин может содержать русские буквы
mazaxaka
13.05.2010, 22:17
подчти разобрался не понятно только как использовать символы @#$% они не дают скрипту исполнится
mazaxaka
14.05.2010, 01:33
спасибо работает. подкажите как парсить русски имена ? кодировка утф-8 в регурярке стоит а-я но оно не парсит
А текст который парсить ты в какой кодировке получаешь?
Попробуй:
iconv();
mazaxaka
14.05.2010, 08:39
windows 1251 . кодировка страници в утф-8. анг буквы и символы норм принемает а вот русские не как
опять mazaxaka и опять у него проблемы с регулярками и кодировкой :D
mazaxaka
14.05.2010, 09:47
да ето снова я) ну не даются они мне. елементарные освоил. а вот по сложней не как.
страница в утф-8 а в регулярке а-я проверяется.. что делать?(
Перекодировать из UTF-8 в CP1251. Логично?)
phpdreamer
14.05.2010, 15:37
Перекодировать из UTF-8 в CP1251. Логично?)
не думаю что логично использовать кодировку CP1251.
Все должно быть в UTF-8
Ну и переодируй
iconv("CP1251","UTF-8",$text);
Помогите вырезать id
<a href="/club/user/?id=1022119&sid=tzufdsse">
Пытаюсь делать так
preg_match_all('#<a href="/club/user/\?id=(.*)&sid=tzufdskv">#iU',$result,$users);
echo "<pre>";
print_r($users);
Но возвращает пустой массив
Array
(
[0] => Array
(
)
[1] => Array
(
)
)
phpdreamer
14.05.2010, 18:48
$result = 'blablablabla <a href="/club/user/?id=1022119&sid=tzufdsse"> blablablablablabla';
preg_match('#<a href="/club/user/\?id=([0-9]{1,10})&sid=tzufdsse">#',$result,$id);
print_r($id[1]);
Ну у меня почти такая же регулярка :)
Только вот почему она тут не работает?
$ch = curl_init("site");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
preg_match_all('#<a href="/club/user/\?id=([0-9]*)&sid=tzufdskv">#iU',$result,$users);
echo "<pre>";
print_r($users);
curl_close($ch);
А вот если так
$site = file_get_contents("site");
preg_match_all('#<a href="/club/user/\?id=([0-9]*)&sid=tzufdskv">#iU',$site,$users);
echo "<pre>";
print_r($users);
То всё работает нормально :confused:
Ну у меня почти такая же регулярка :)
Только вот почему она тут не работает?
$ch = curl_init("site");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
preg_match_all('#<a href="/club/user/\?id=([0-9]*)&sid=tzufdskv">#iU',$result,$users);
echo "<pre>";
print_r($users);
curl_close($ch);
Наводка, & :/ раскодируй амперсанд, это браузер тебе так выдал.
Всем привет.
В общем у меня такая задача :
Мне нужно,чтобы скрипт извлекал номер из ссылки , и записывал его в массив .
<?php
$html =
'
<a href="details.php?id=1">Название1</a>
<a href="details.php?id=2">Название2</a>
<a href="details.php?id=3">Название3</a>
';
ПОМОГИТЕ ПОЖАЛУЙСТА!!!
preg_match_all('#<a href="details.php\?id=(.*)">(.*)</a>#',$html,$a);
print_r($a);
я точно не знаю какой номер,так что посмотри сам что нужно
почти , только в массив заноситься и текст а мне только цифра нужны
preg_match('/"details.php\?id=(\d+)"/i', $html, $m);
var_dump($m[1]);
ну и нахрена отдельную тему создавать?
preg_match('/"details.php\?id=(\d+)"/i', $html, $m);
var_dump($m[1]);
ну и нахрена отдельную тему создавать?
твое только первое число читает
а еще ребята , а как чтобы читался ТОЛЬКо details.php ...
просто если userdetails.php он тоже считает
GreenBear
16.05.2010, 08:00
preg_match_all('/"details\.php\?id\=(\d+)"/i', $html, $m);
var_dump($m[1]);
preg_match_all('/"details\.php\?id=(\d+)"/i', $html, $m);
var_dump($m[1]);
= не спецсимвол, не надо его экранировать)
как вывести контент и спарсить от сюда (http://whois.domaintools.com/77.118.80.4)
диапазон?
programming
27.05.2010, 20:58
Подскажите пожалуйста регулярку для выдирания ссылки и её анкора из выдачи яндекса.
http://yandex.ru/yandsearch?text=собака&lr=2&rstr=-1&numdoc=50
<b\s+class="cu">(\d+)</b>.*?<a\s+class="cs".*?href="(.+?)".*?>(.*?)</a>
DonKihot
28.05.2010, 20:04
В массиве список названий файлов : data1.exe , data2.doc , data3. mp3 и т.д.
Нужна регулярка которая занесет формат файла в переменную...
В массиве список названий файлов : data1.exe , data2.doc , data3. mp3 и т.д.
Нужна регулярка которая занесет формат файла в переменную...
foreach($arr as $v) $ext = strtolower(strrchr($v,"."));
Мего регулярка
DonKihot
30.05.2010, 00:19
помогите, пожалуйста, ещё с одним регулярным выражением :
есть строка :
/file_manager/111/
нужно удалить одну папку,
т.е. чтобы получалось /file_manager/
Или например было /file_manager/,
а стало /
помогите, пожалуйста, ещё с одним регулярным выражением :
есть строка :
/file_manager/111/
нужно удалить одну папку,
т.е. чтобы получалось /file_manager/
Или например было /file_manager/,
а стало /
/(\/\w+\/)\w+\/|(\/)\w+\//
какой регуляркой можно спарсить ссылки,идущие с одной страницы сайта на другую(не на другой сайт),т.е. /auth,/user/login
mastaadon
06.06.2010, 17:06
Ребята нужна помощь, есть скрипта который читает страницу и находит баланс счета который виден на главной странице
preg_match('/.*Remaining credit[^0-9]+([0-9.]+).*/', $result, $matches);
return $matches[1];
Фрагменты как указывается баланс счета:
Remaining credit:
? 1,501.00 (buy more)
или
Remaining credit:
? 4.76 (buy more)
если сумма ниже 1000 единиц, то указывается типа 999.99 и скрипт находит его корректно. Если сумма выше 1000 единиц, то указывается в виде 1,012.99 то есть после первой цифры появляется " , " и я не могу ее найти. Может ли кто помочь? Благодарен заранее.
mastaadon, /((?:\d,\d{3}\.\d{2}|\d{1,3}\.\d{2}))/
mastaadon
06.06.2010, 18:32
Спасибо за скорый ответ, изменил код но он притащил мне 4.01 из заголовка
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
или может я что не так сделал?
Так ты добавляй то что было в твоей регулярке.
/.*Remaining credit: (? (?:\d,\d{3}\.\d{2}|\d{1,3}\.\d{2})).*/
spamoney
07.06.2010, 14:14
Здравствуйте, скажите, пожалуйста, что делает данное регулярное выражение:
$string = preg_replace("/_-+_/", "--", $string);
Заменяет в строке текст типа
_-_
_----_
_--------_
и т.д. на два дефиса
mastaadon
07.06.2010, 16:06
Так ты добавляй то что было в твоей регулярке.
/.*Remaining credit: (? (?:\d,\d{3}\.\d{2}|\d{1,3}\.\d{2})).*/
Так же ничего не вышло, потому что в таком виде ничего не находил на странице. Вопрос все таки решился, оказывается я кое что не дописал.
В таком виде все стало на места:
/.*Remaining credit[^0-9]+([0-9,]+[.0-9]+).*/
Благодарю за помощь в любом случае.
Помогите пожалуйста с регуляркой, не пойму как сделать. Паршу список сайтов на наличие хешей, как мне вычленить хеши и имена такого вида:
<p>admin:d609ec04c87e253c8538ad342c120b90:IwLS4sYM9Ni K1cRWBXW9WpZZPitM3xEW</p>
<p>admin:71ec9d1a7735496e89459dc117593239:oExipLLArM1 AUMjBv5DjfhBd6mgg3MUx</p>
<p>admin:d5ac7b77dc4eebe2c710d998508d8a9b</p>
Чтоб на выходе получилось:
admin:d609ec04c87e253c8538ad342c120b90:IwLS4sYM9Ni K1cRWBXW9WpZZPitM3xEW
admin:71ec9d1a7735496e89459dc117593239:oExipLLArM1 AUMjBv5DjfhBd6mgg3MUx
admin:d5ac7b77dc4eebe2c710d998508d8a9b
Хеш всегда между тегами <p>
|<p>(.+?:[a-f0-9]{32}(?::[a-z0-9]*)?)</p>|i
strip_tags
preg_match_all('/<p>(.*)<\/p>/',$sites,$a); print_r($a);
-=Zhenek=-
11.06.2010, 19:23
как можно через htaccess организовать,чтоб при обращении например на blabla.site.ru отображалось содержимое site.ru ну или редиректило на site.ru/index.html
Поддомены в панели не созданы, их может быть хоть 100.. тоесть любые..
Если в httpd.conf для VirtualHost site.com настроен ServerAlias *.host.com, то по адресу host.com, www.host.com, sub.host.com будут открываться файлы из директории сайта (из DocumentRoot).
Прошу помощи, как из кода:
<p>текст111<br>
текст222<br>
<br>
текст333</p>
получить строку, чтобы <br> заменялось на %0d%0a
текст111%0d%0aтекст222%0d%0a%0d%0aтек ст333
str_replace('<br>', '%0d%0a',$text);
есть RewriteRule ^user/([^/]+)\.html$ /index.php?ucp=$1 [L]
которое редиректит index.php?ucp=admin на /user/admin.html
так вопрос заключается в следующем: как сделать, чтобы при обращении к index.php?ucp=admin сразу кидало на /user/admin.html. а сейчас работают оба варианта.
пробовал в качестве третьего параметра реврайтрула использовать [R=301] но получал как раз обратный эффект, т.е с /user/admin.html кидало на index.php?ucp=admin.
GrimmJow
16.06.2010, 21:30
<input type="hidden" name="killspammers" value="080F565556555205660702570E"/>
Надо получить 080F565556555205660702570E .
Пишу
if( preg_match('/\<input type=\"hidden\" name=\"killspammers\" value=\"(.+?)\"\/\>/', $html, $out) )
{
echo $out[1];
}
Ничего не выводит. Почему?
В $html - код страницы.
Всё нормально выводит. Проверь содержимое переменной.
GrimmJow
17.06.2010, 13:12
Да, извиняюсь. Ошибка перед этим была, $html некорректно парсился.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot