Просмотр полной версии : [Регулярки & Mod_Rewrite] Задай вопрос, получи ответ.
Как сделать так чтобы при запросе файла index.html сервер передавал мне файл index.php.
На данный момент Я реализовал это вот так:
RewriteRule ^index.html$ index.php
Но это безумно неудобно, т.к. для каждого файла придётся отдельно прописывать строку. Как сделать так чтобы аналогичное правило работало для всех файлов на сервере?
Большое Спасибо!
RewriteRule ^(.*?).html$ $1.php
Подскажите как фильтровать входящие данные - разрешены только буквы и цифры
и второй вариант - разрешены все символы кроме < > ?
#Wolf#
1. if(preg_match('/^[\w\d]+$/',$var)) echo 'good';
2. if(preg_match('/^[^<>?]+$/',$var2)) echo 'good';
RewriteRule ^(.*?).html$ $1.php
Не работает :(
Нашёл вот такую штуку для .htaccess
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]
Как мне её переделать под себя?
P.s. Нужно редиректить с [DOMEN]/index.html на [DOMEN]/
Заранее благодарен! :)
Ну что? С этим никто не может помочь? :(
dinar_007
25.02.2009, 14:26
Ну что? С этим никто не может помочь? :(
RewriteRule ^(.*)\.html$ /$1\.php
BlackSun
26.02.2009, 19:50
mod_rewrite
Вообщем проблема такая - нужно переопределить запросы к папке /data/ на запросы в /docs/_private/
Скрипты - любые, параметры - разные, папка /data/ не сушествует ..
В голову приходит только RewriteRule ^data/([^/]+)$ /docs/_private/$1
^data/(.*)$ /docs/_private/$1
BlackSun
26.02.2009, 20:12
Не пашет =\
----
Пойду спать, завтра на свежую голову подумаю ..
BlackSun RewriteCond %{REQUEST_URI} ^/data
RewriteRule ^data/(.+) /docs/_private/$1 [L]
Имею: $str = '<a>I<b> love</lo> you </dd>';
Необходимо убрать все теги.Теги мооугт быть разными,как в примере.
Чтото с прег-реплесом мучился,неполучаеться,я думал у всех прег_ синтаксес одинаковый,а это чтото неработает(
Уже не актуально:
preg_replace('/<(.*?)>/','',$str);
Можно проще: strip_tags($str)
Запарился с регуляркой...
Есть страница, парситься в file_get_contents
там есть несколько дивов.
<!-- \\vulnerabilities\\ -->
<div class="postblock1">
<h4><a class="medium" href="ability/369157.php">Все что угодно</a></h4>
<p>Все что угодно.</p>
<div class="post-info">
28 февраля, 2009 (просмотров: 3)
</div>
</div>
<!-- //vulnerabilities// -->
поймать нужно весь див что между <!-- \\vulnerabilities\\ --> и <!-- //vulnerabilities// -->
Заранее спасибо.
AkyHa_MaTaTa
28.02.2009, 18:26
Как бы так вроде:
<?php
$html=<<<HTML
блаблаблаблаблаблаблаблаб лаблаблабла
<!-- \\vulnerabilities\\ -->
<div class="postblock1">
<h4><a class="medium" href="ability/369157.php">Все что угодно</a></h4>
<p>Все что угодно.</p>
<div class="post-info">
28 февраля, 2009 (просмотров: 3)
</div>
</div>
<!-- //vulnerabilities// -->
блаблаблаблаблаблаблаблаб лаблаблабла
блаблаблаблаблаблаблаблаб лаблаблабла<>
HTML;
preg_match('#<!-- \\\vulnerabilities\\\ -->(.*)<!-- //vulnerabilities// -->#sU',$html,$gatcha);
print_r($gatcha);
preg_match('#<div class="postblock1">(.*)</div>#sU',$html,$gatcha);
print_r($gatcha);
?>
Спасиб, тока вот косяк их много а суеться только один... Кто нить толкнет на мысль как их все взять?
по строкам искать нельзя вроде как, они ведь много строчные...
туплю немного, болею счас...:(
AkyHa_MaTaTa
28.02.2009, 20:05
Спасиб, тока вот косяк их много а суеться только один... Кто нить толкнет на мысль как их все взять?
по строкам искать нельзя вроде как, они ведь много строчные...
туплю немного, болею счас...:(
preg_match_all
ппц. ненавижу эти регулярки уже. вроде все просто.
preg_replace('#<a href="(.*)">(.*)</a>#sU',"$1","<a href="/bitrix/exturl.php?goto=http%3A%2F%2Fwww.opera.com">www.opera.com</a>");
но не хочет работать. :(
нужно www.opera.com
Кто нить вкурсе почему не канает?
Pashkela
03.03.2009, 17:46
$b = 'новое_название_ссылки';
echo preg_replace('|>.*</a>|','>' . $b . '</a>','<a href="/bitrix/exturl.php?goto=http%3A%2F%2Fwww.opera.com">www.opera.com</a>');
а у тебя там просто путаница с кавычками, в последнем параметре, двойные в двойных
это я когда в форум вставлял напутал, вообще то там переменная
preg_replace('#<a href="(.*)">(.*)</a>#sU',"$1",$e);
вот так в оригинале.
твой вариант не особо в тему т.к. новое название я должен вытащить из старого. то есть из
<a href="/bitrix/exturl.php?goto=http%3A%2F%2Fwww.opera.com">www.opera.com</a>
должно получиться www.opera.com
Вообще особенно интересует почему мой вариант не работает. :(
.:EnoT:.
03.03.2009, 18:50
Дык если просто вытащить надо, то зачем использовать preg_replace() когда есть preg_match() ?
$a = '<a href="/bitrix/exturl.php?goto=http%3A%2F%2Fwww.opera.com">www.opera.com</a>';
preg_match('#>([^<]*)</a>#s', $a, $out);
echo $out[1];
Вообще особенно интересует почему мой вариант не работает.
Потому что не объявлена переменная $1 и путаница с кавычками (как сказано выше)
Нужно не просто вытащить а в тексте заменить.
бла бла бла
<a href="/bitrix/exturl.php?goto=http%3A%2F%2Fwww.opera.com">www.opera.com</a>
бла бла бла
из этого нужно что бы получилось.
бла бла бла
www.opera.com
бла бла бла
там же двойные кавычки внутри одинарных. они вроде как не должны интерпретитьроваться.... ?
например
$reg='#<div class="postblock1">(.*)</div>#sU';
preg_match_all($reg,$res,$result); прекрасно работает.
Enot, твоя регулярка тоже не цепляет... :(
blaga Регулярка правильна, просто надо следить за подмасками. Достаточно убрать скобки внутри href="(.*)" ИЛИ обращаться ко второй подмаске (ака $2 во втором параметре)
echo preg_replace('#<a href=".*">(.*)</a>#sU',"$1",'<a href="/bitrix/exturl.php?goto=http%3A%2F%2Fwww.opera.com">www.opera.com</a>');
Или проще:preg_replace('~<a[^>]*>(.+)</a>~Usi','$1',$in);
На входе: <a href="/bitrix/exturl.php?goto=http%3A%2F%2Fwww.opera.com">www.opera.com</a>
На выходе: www.opera.com
.:EnoT:. К слову, переменная - НЕ может начинаться на цифру
я щас об стенку убьюсь. ни одна регулярка не схватывает... :(
короч вот он чертов быдло код.
function get_full_vul($url)
{
$r=file_get_contents($url);
$re='#<div class="cont-cont">(.*)<p><strong>Источники#sU';
preg_match($re,$r,$all);
$e=str_replace('<div class="cont-cont">'," ",$all[0]);
$e=str_replace('<div class="title-line" id="title-vulnerability">'," ",$e);
$e=str_replace('</div>'," ",$e);
$e=str_replace('<div class="postblock3">'," ",$e);
$e=str_replace('<p><strong>Источники'," ",$e);
preg_replace('~<a[^>]*>(.+)</a>~Usi','$1',$e);
echo $e;
}
get_full_vul("http://www.securitylab.ru/vulnerability/369396.php");
и еще что за модификатор U ? а то у меня в книге про него нету ничего.
Pashkela
03.03.2009, 20:24
полный улёт:)) Скажи толком, просто, что тебе надо, тут дел на 5 минут:) Лучше дай ссылку на страничку и чо там с ней надо "выцепить/заменить"
.:EnoT:.
03.03.2009, 20:35
Дык сразу бы код выложил)
preg_replace('~<a[^>]*>(.+)</a>~Usi','$1',$e);
замени на:
$e = preg_replace('#<a href="[^"]*">([^<]*)</a>#si','<a href="http://\\1">\\1</a>',$e);
И всё будет работать)
я щас об стенку убьюсь. ни одна регулярка не схватывает... :(
короч вот он чертов быдло код.
function get_full_vul($url)
{
$r=file_get_contents($url);
$re='#<div class="cont-cont">(.*)<p><strong>Источники#sU';
preg_match($re,$r,$all);
$e=str_replace('<div class="cont-cont">'," ",$all[0]);
$e=str_replace('<div class="title-line" id="title-vulnerability">'," ",$e);
$e=str_replace('</div>'," ",$e);
$e=str_replace('<div class="postblock3">'," ",$e);
$e=str_replace('<p><strong>Источники'," ",$e);
preg_replace('~<a[^>]*>(.+)</a>~Usi','$1',$e);
echo $e;
}
get_full_vul("http://www.securitylab.ru/vulnerability/369396.php");
и еще что за модификатор U ? а то у меня в книге про него нету ничего.
U - минимизировать числитель, то есть искать как можно меньше совпадений
blaga Может лучше так? function get_full_vul($url)
{
$r=file_get_contents($url);
$re='#<div class="cont-cont">(.*)<p><strong>Источники#sU';
preg_match($re,$r,$all);
$e=strip_tags($all[1],'<p><strong><h1><b><br>');
echo $e;
}
get_full_vul("http://www.securitylab.ru/vulnerability/369396.php");
Про модификаторы - тут http://ru.php.net/manual/ru/reference.pcre.pattern.modifiers.php
.:EnoT:., спасиб, работает как нужно. :)
Gifts, мне не нужно все эти теги удалять, только некоторые.
Есть строки вида: <link rel="shortcut icon" href="/sat/favicon.ico" type="image/x-icon"/>
Как замутить так, чтобы выдирались только значения определённых атрибутов,к примеру,атрибута rel.
preg_match("/<link rel=(.*)/",$out,$matches) Не работает и выдирает всю строку,а тег идёт как <link rel =что-то тут />
Как раз /> и не удаётся впаять...пишет,что,мол,неизв естный модификатор.Само собой,разумеется...Пробовал по-всякому,но выходило одно и тоже.
Pashkela
05.03.2009, 02:44
<pre>
<?php
$in = '<link rel="shortcut icon" href="/sat/favicon.ico" type="image/x-icon"/>';
preg_match('|<link rel="(.*)".*/>|Ui',$in,$x);
print_r ($x);
?>
</pre>
<pre>
<?php
$in = '<link rel="shortcut icon" href="/sat/favicon.ico" type="image/x-icon"/>';
preg_match('|<link rel="(.*)".*/>|Ui',$in,$x);
print_r ($x);
?>
</pre>
Это всё,конечно,замечательно... о вот как он работает - загадка древних )))
Pashkela
05.03.2009, 20:32
в смысле как:
<link rel="
тут все понятно
(.*)
означает любые символы, т.е. всё, скобочки означают, что надо сохранить
".*/>
всё, что после кавычек и до знака />, просто обозначается, что там не пусто, сохранять не надо, поэтому и скобочек нет.
|| отличается от // только тем, что в || можно писать как есть, например </a>,
а в // только так тогда придется: <\/a> - т.е. экранировать так называемые специальные символы.
Вот отличная статья по регуляркам в общем, сам по ней вкуривал, на самом дело всё просто до удивления, тем более для программера (и не слушай тех, кто говорит "замудренные словечки" - типо метасимволы и прочее, всё на самом деле как детском садике):
http://pyha.ru/forum/topic/19.0
просто надо почитать и врубиться
ЗЫЖ Просто уяснить, что очень похоже, когда ищешь файло в виндах, например чтобы найти все .gif файлы - набираешь в строке поиска - *.gif*
Ну и тут тоже самое, задаешь маску и смотришь потом, правильно задал или нет.
Я пока другую читал,но твою обязательно прочитаю:).Теперь вопрос по-другой регги:
/^[a-zA-Z0-9_!#%])+@{1,1}[m][a][i][l][.][r][u]{1,1}$/
Это регулярка,которая чекает гипотетическое:) мыло ТОЛЬКО mail.ru:)9Так,для себя накатал).Потом пришла мысля,что можно из файла потом считать и сохранять куда-то.Я не прошу каких-то программных решений - это чисто для тренировки:).Всё окей,но у меня в $matches(я просто ток регулярку привёл),сохраняется только первый символ мыла:(.Но оно и ясно - я ведь обработал только один символьный класс:).Однако, квантификатор + должен тоже с этим бороться:(.Символы ^ и $ должны тоже решать проблему с обработкой целой строки.Как выйти из положения пока не решил...
ЗЫ: http://www.phpclub.ru/detail/article/regexp_1 Тут тоже статейка хороффая,но я её ещё пока ни асилил до конца:).
m0nsieur
05.03.2009, 23:29
/* upd */ для логина
/^([a-zA-Z0-9_!#%]+)@{1,1}[m][a][i][l][.][r][u]{1,1}$/
Нэнэнэ...он же сохранит полностью email:),а я хотел,чтобы он только сам логин вырезал.
P.S.: Кстати,там два элемента массива...тобишь два совпадения ? Но такого не может быть.Или же это две разные переменные...
AkyHa_MaTaTa
05.03.2009, 23:42
/^([a-zA-Z0-9_!#%]+)@{1,1}[m][a][i][l][.][r][u]{1,1}$/
Омг,
Если ты собрался читать из файла то наверно ^ $ не стоит указывать:
#([0-9a-z_]+)@mail\.ru#i
Опля,сработало ж )))Вот ток непонятно,почему не надо указывать ^ и $.Считывается то вся строка...Ты указал модификатор /i,а он распространяется на все символы.Мало я знаю ещё походу:)
Pashkela
05.03.2009, 23:54
Вот эта регулярка вытаскивает ВСЕ мейлы:
/\w+@\w+.\w+/
в эта только мейл.ру:
'/\w+@mail.ru/'
AkyHa_MaTaTa
05.03.2009, 23:59
Вот эта регулярка вытаскивает ВСЕ мейлы:
/\w+@\w+.\w+/
в эта только мейл.ру:
'/\w+@mail.ru/'
\w - Любой символ, образующий "слово" это и кавычки и все на свете, я думаю на mail.ru запрешены такие имена в мыльнике, да и везде так.
Рулишь:))Но с \w пишут,что не катит с символами типа _,а только с диапазонами a-zA-Z,но из-за локали(я так понял - это локалхост),зависит многое...
\w - Любой символ, образующий "слово" это и кавычки и все на свете, я думаю на mail.ru запрешены такие имена в мыльнике, да и везде так.
"word" символ - это произвольная цифра, буква или символ подчеркивания, проще говоря, любой символ, который может являться частью 'слова' в Perl.
Но если локаль позволяет то будут и другие символы, отличные от инглиша
Я пока другую читал,но твою обязательно прочитаю:).Теперь вопрос по-другой регги:
/^[a-zA-Z0-9_!#%])+@{1,1}[m][a][i][l][.][r][u]{1,1}$/
Это регулярка,которая чекает гипотетическое:) мыло ТОЛЬКО mail.ru:)9Так,для себя накатал).Потом пришла мысля,что можно из файла потом считать и сохранять куда-то.Я не прошу каких-то программных решений - это чисто для тренировки:).Всё окей,но у меня в $matches(я просто ток регулярку привёл),сохраняется только первый символ мыла:(.Но оно и ясно - я ведь обработал только один символьный класс:).Однако, квантификатор + должен тоже с этим бороться:(.Символы ^ и $ должны тоже решать проблему с обработкой целой строки.Как выйти из положения пока не решил...
ЗЫ: http://www.phpclub.ru/detail/article/regexp_1 Тут тоже статейка хороффая,но я её ещё пока ни асилил до конца:).
что вы делаете товарищь)))
#^([a-z0-9\_\.\-]+)\@mail\.ru$#i
^ и $ это начало конец строки..
() - выделение в подвыражение, оно собственно тут не особо нужно
i - модификатор неучета регистра
Почему () не особо нужно ? Как же тогда резалтить в фаил или ещё куда ?Поясни-ка:(
#^([a-z0-9\_\.\-]+)\@mail\.ru$#i
Сегодня день пьяного гуру? Если не сложно чак обьясни мне зачем слешировать @ и _, грубо говоря вот такое регулярное выражения будет работать с preg_match -#([^_\.\-][0-9a-z_\-\.]{1,16})@mail\.ru#i без лишних телодвижений ,
() - выделение в подвыражение, оно собственно тут не особо нужно
А как ты собрался выташить имя без подмаски?
З.Ы. 2Велемир не кидайся умными слова пытаесь скрыть свои непонимание чего то.
Например есть
$text = '<div><b>Что тут написано</b></div>';
$rep ='<u>';
$sablon = '/<br>/is';
$rezult = preg_replace($sablon,$rep,$text);
echo $rezult;
чтоб было так
$text = '<div><u>Что тут написано</u></div>';
как это сделать одной фунцией ...
Имхо здеся не нужна регулярка:
<?php
$text = '<div><b>Что тут написано</b></div>';
$rezult = strtr($text,array('<b>'=>'<u>','</b>'=>'</u>'));
echo $rezult;
?>
Эм...так задумано ?
$x = 'fuckinstrin';
if(preg_match('#[s]....#',$x,$matches)) {
print_r($matches);
}
Сначала проверяется каждый символ по куску шаблона [s].Совпал один символ.Затем идут точки,которые соответствуют любому символу.Так почему проверка начинается не с начала,а с того места,где произошло первое совпадение ? Шаблон сработал правильно,но почему-то не так,как я ожидал))(Ожидалось sfuck)
Эм...так задумано ?
$x = 'fuckinstrin';
if(preg_match('#[s]....#',$x,$matches)) {
print_r($matches);
}
Сначала проверяется каждый символ по куску шаблона [s].Совпал один символ.Затем идут точки,которые соответствуют любому символу.Так почему проверка начинается не с начала,а с того места,где произошло первое совпадение ? Шаблон сработал правильно,но почему-то не так,как я ожидал))(Ожидалось sfuck)
Ну во первых [] - во сновном самое логичное применять для символьго класса, у тебя 1 символ,
во вторых если ..... - жесть, {4} то есть так
#s.{4}#
, ну и в третих у тебя никак не будет sfuck потому как у тебя я не наблюдаю ПЕРЕД fuckinstrin s , у тебя будет strin, регулярное выражения будет обрабатываться с начало, слева на право без возратов назад.
, регулярное выражения будет обрабатываться с начало, слева на право без возратов назад.
Это всё,что я хотел узнать :))).Что касается ....,то это было для примера.Конечно же,целесообразнее использовать .{4},но ведь ....=.{4},не так ли ? Также,как и [символ] = символ.По крайней мере,я отличий не наблюдал.
ЗЫ: Диву даюсь,что так быстро получил ответ на вопрос :):).Лови плюсики)))
А теперь я :)
Хотя я заранее знаю ответ на свой вопрос.
имеем например;
$new = preg_replace('#old(.*)#','new(тут то что было в (.*)',$str)';
нереал?
m0Hze $new=preg_replace('~old(.*)~','new$1',$str);
Есть такой html код
<th width="80">
</th>
<th width="125" style='white-space: nowrap;'>
<a style="cursor:pointer" onclick="javascript:doit(6, 1, 61, 9, 1, 1);"><img src="http://uni9.ogame.ru/evolution/img/e.gif" border="0" alt="Шпионаж" title="Шпионаж" /></a>
<a href="index.php?page=writemessages&session=e104001d5a6b&messageziel=142200"><img src="" border="0" alt="Написать сообщение" title="Написать сообщение" /></a>
<a href="index.php?page=buddy&session=e104001d5a6b&action=7&buddy_id=142200"><img src="http://uni9.ogame.ru/evolution/img/b.gif" border="0" alt="Предложение подружиться" title="Предложение подружиться" /></a>
</th>
</tr>
<tr>
<th width="30">
<a href="#" tabindex="9" >10</a>
</th>
<th width="30">
<a style="cursor:pointer" onmouseover='return overlib("<table width=240><tr><td class=c colspan=2 >Планета amber [1:61:10]</td></tr><tr><th width=80 ><img src=http://uni9.ogame.ru/evolution/planeten/small/s_wasserplanet01.jpg height=75 width=75 /></th><th align=left ><a href=# onclick=doit(6,1,61,10,1,1) >Шпионаж</a><br><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=1 m>Атака</a><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=5 >Удерживать</a><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=3 >Транспорт</a><br /></th></tr></table>", STICKY, MOUSEOFF, DELAY, 750, CENTER, OFFSETX, -40, OFFSETY, -40 );' onmouseout="return nd();">
<img src="http://uni9.ogame.ru/evolution/planeten/small/s_wasserplanet01.jpg" height="30" width="30"/></a>
</th>
<th width="130" style='white-space: nowrap;'>
amber</th>
<th width="30" style='white-space: nowrap;'>
</th>
<th width="30">
</th>
<th width="150">
<a style="cursor:pointer" onmouseover="return overlib('<table width=240 ><tr><td class=c >Игрок amberios. Место в рейтинге - 1264</td></tr><th><table><tr><td><a href=index.php?page=writemessages&session=e104001d5a6b&messageziel=143212 >Написать сообщение</a></td></tr><tr><td><a href=index.php?page=buddy&session=e104001d5a6b&action=7&buddy_id=143212 >Предложение подружиться</a></td></tr><tr><td><a href=index.php?page=statistics&session=e104001d5a6b&start=1201 >Статистика</a></td></tr></table></th></table>', STICKY, MOUSEOFF, DELAY, 750, CENTER, OFFSETY, -40 );" onmouseout="return nd();">
<span class="inactive">Lightsinger</span></a>
(<span class='inactive'>i</span>)
</th>
Нужна регулярка которая вытаскивала бы выделенный текст.
Пробывал составить сам получилось следующее:
/="\d+" >(\d+)<\/a>.*\"inactive\">([[:graph:]]+)<\/span><\/a>/is
регулярка работает, но если кусков вышеприведенного html кода несколько, то вытаскивается только последнее совпадение с регуляркой.
preg_match('<span class="inactive">(.*)</span>',$text,$match1');
preg_match('tabindex="9" >(.*)</a>',$text,$match1');
Pashkela
08.03.2009, 23:59
<pre>
<?php
@set_time_limit(0);
@ini_set("display_errors","1");
$in = <<<HTML
<th width="80">
</th>
<th width="125" style='white-space: nowrap;'>
<a style="cursor:pointer" onclick="javascript:doit(6, 1, 61, 9, 1, 1);"><img src="http://uni9.ogame.ru/evolution/img/e.gif" border="0" alt="Шпионаж" title="Шпионаж" /></a>
<a href="index.php?page=writemessages&session=e104001d5a6b&messageziel=142200"><img src="" border="0" alt="Написать сообщение" title="Написать сообщение" /></a>
<a href="index.php?page=buddy&session=e104001d5a6b&action=7&buddy_id=142200"><img src="http://uni9.ogame.ru/evolution/img/b.gif" border="0" alt="Предложение подружиться" title="Предложение подружиться" /></a>
</th>
</tr>
<tr>
<th width="30">
<a href="#" tabindex="9" >10</a>
</th>
<th width="30">
<a style="cursor:pointer" onmouseover='return overlib("<table width=240><tr><td class=c colspan=2 >Планета amber [1:61:10]</td></tr><tr><th width=80 ><img src=http://uni9.ogame.ru/evolution/planeten/small/s_wasserplanet01.jpg height=75 width=75 /></th><th align=left ><a href=# onclick=doit(6,1,61,10,1,1) >Шпионаж</a><br><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=1 m>Атака</a><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=5 >Удерживать</a><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=3 >Транспорт</a><br /></th></tr></table>", STICKY, MOUSEOFF, DELAY, 750, CENTER, OFFSETX, -40, OFFSETY, -40 );' onmouseout="return nd();">
<img src="http://uni9.ogame.ru/evolution/planeten/small/s_wasserplanet01.jpg" height="30" width="30"/></a>
</th>
<th width="130" style='white-space: nowrap;'>
amber</th>
<th width="30" style='white-space: nowrap;'>
</th>
<th width="30">
</th>
<th width="150">
<a style="cursor:pointer" onmouseover="return overlib('<table width=240 ><tr><td class=c >Игрок amberios. Место в рейтинге - 1264</td></tr><th><table><tr><td><a href=index.php?page=writemessages&session=e104001d5a6b&messageziel=143212 >Написать сообщение</a></td></tr><tr><td><a href=index.php?page=buddy&session=e104001d5a6b&action=7&buddy_id=143212 >Предложение подружиться</a></td></tr><tr><td><a href=index.php?page=statistics&session=e104001d5a6b&start=1201 >Статистика</a></td></tr></table></th></table>', STICKY, MOUSEOFF, DELAY, 750, CENTER, OFFSETY, -40 );" onmouseout="return nd();">
<span class="inactive">Lightsinger</span></a>
(<span class='inactive'>i</span>)
</th>
-------------------------------------------------------------------------------------------------------
ДУБЛЬ:
-------------------------------------------------------------------------------------------------------
<th width="80">
</th>
<th width="125" style='white-space: nowrap;'>
<a style="cursor:pointer" onclick="javascript:doit(6, 1, 61, 9, 1, 1);"><img src="http://uni9.ogame.ru/evolution/img/e.gif" border="0" alt="Шпионаж" title="Шпионаж" /></a>
<a href="index.php?page=writemessages&session=e104001d5a6b&messageziel=142200"><img src="" border="0" alt="Написать сообщение" title="Написать сообщение" /></a>
<a href="index.php?page=buddy&session=e104001d5a6b&action=7&buddy_id=142200"><img src="http://uni9.ogame.ru/evolution/img/b.gif" border="0" alt="Предложение подружиться" title="Предложение подружиться" /></a>
</th>
</tr>
<tr>
<th width="30">
<a href="#" tabindex="9" >10</a>
</th>
<th width="30">
<a style="cursor:pointer" onmouseover='return overlib("<table width=240><tr><td class=c colspan=2 >Планета amber [1:61:10]</td></tr><tr><th width=80 ><img src=http://uni9.ogame.ru/evolution/planeten/small/s_wasserplanet01.jpg height=75 width=75 /></th><th align=left ><a href=# onclick=doit(6,1,61,10,1,1) >Шпионаж</a><br><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=1 m>Атака</a><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=5 >Удерживать</a><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=3 >Транспорт</a><br /></th></tr></table>", STICKY, MOUSEOFF, DELAY, 750, CENTER, OFFSETX, -40, OFFSETY, -40 );' onmouseout="return nd();">
<img src="http://uni9.ogame.ru/evolution/planeten/small/s_wasserplanet01.jpg" height="30" width="30"/></a>
</th>
<th width="130" style='white-space: nowrap;'>
amber</th>
<th width="30" style='white-space: nowrap;'>
</th>
<th width="30">
</th>
<th width="150">
<a style="cursor:pointer" onmouseover="return overlib('<table width=240 ><tr><td class=c >Игрок amberios. Место в рейтинге - 1264</td></tr><th><table><tr><td><a href=index.php?page=writemessages&session=e104001d5a6b&messageziel=143212 >Написать сообщение</a></td></tr><tr><td><a href=index.php?page=buddy&session=e104001d5a6b&action=7&buddy_id=143212 >Предложение подружиться</a></td></tr><tr><td><a href=index.php?page=statistics&session=e104001d5a6b&start=1201 >Статистика</a></td></tr></table></th></table>', STICKY, MOUSEOFF, DELAY, 750, CENTER, OFFSETY, -40 );" onmouseout="return nd();">
<span class="inactive">Lightsinger</span></a>
(<span class='inactive'>i</span>)
</th>
HTML;
preg_match_all('|<a href=.*tabindex=.*>(.*)</a>|', $in,$res1);
preg_match_all('|<span class=.*>(.*)</span></a>|', $in,$res2);
for($i=0;$i<count($res1[1]);$i++) echo "{$res1[1][$i]}\n";
for($z=0;$z<count($res2[1]);$z++) echo "{$res2[1][$z]}\n";
?>
</pre>
.:EnoT:.
09.03.2009, 00:20
Я как всегда сторонник обойтись одной регуляркой))
preg_match_all('#(tabindex="9"[\s]?|class="inactive")>([0-9]*|[^<]*)[</span>]*</a>#s', $str, $out);
print_r($out);
Результат:
[2] => Array
(
[0] => 10
[1] => Lightsinger
)
подскажите как отсеять все символы кроме :
A-Z
a-z
0-9
. , - * ( )
и точно так же с русским алфавитом.
и второй вопрос по мод_реврайту
что имеем:
http://site.ru/index.php?page=x и на этой же странице параметр id
что хотим: http://site.ru/page/x и так же с id
ээмм а в скриптах не надо будет менять ссылки?($pervpage = '<a title="В начало" href= ./index.php?page=1>';)
.:EnoT:.
11.03.2009, 07:46
подскажите как отсеять все символы кроме :
A-Z
a-z
0-9
. , - * ( )
и второй вопрос по мод_реврайту
что имеем:
http://site.ru/index.php?page=x и на этой же странице параметр id
что хотим: http://site.ru/page/x и так же с id
ээмм а в скриптах не надо будет менять ссылки?($pervpage = '<a title="В начало" href= ./index.php?page=1>';)
1)
Так:
$str = 'vbgmhdg*ere(bmdtjkddv0964,32257));№\84Рsdgdgbs !@@3ё+_):;№';
preg_match_all('#([a-z0-9-\.,\*\(\)]?)#i', $str, $out);
echo join('', $out[1]);
Или так:
$str = 'vbgmhdg*ere(bmdtjkddv0964,32257));№\84Рsdgdgbs !@@3ё+_):;№';
echo preg_replace('#([^a-z0-9-\.,\*\(\)]?)#i', '', $str);
2)
RewriteRule ^page/([0-9]*)$ index.php?page=$1 [L]
И ссылки придётся менять в скриптах
.:EnoT:.
13.03.2009, 11:30
1) а-я
2) Правь пути к стилям, картинкам и т.д. Браузер то твой считает что это папка и соответственно оттуда и пытается загрузить. Чтоб не париться указывай полные пути.
Помогите вытащить текс
<div class="h1"><h1>ТЕКСТ</h1></div>
<p><em>ТЕКСТТЕКСТТЕКСТТЕКСТ
ТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТ ТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТ ТЕКСТТЕКСТ
ТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТ ТЕКСТТЕКСТТЕКСТ.<br />
</p>
<div class="links">
попробовал так
preg_match_all('|<div class="h1"><h1>(.*)<div class="links">|U);
В регулярках разбираюсь плохо, но хочется все-таки понять в чем дело. =)
preg_match('|<p><em>(.*)<br|')
не, мне надо имено с этих тегов: <div class="h1"><h1> <div class="links">
ну замени теги,что тупиш то?
Pashkela
13.03.2009, 17:29
<?php
$in = '
<div class="h1"><h1>ТЕКСТ</h1></div>
<p><em>ТЕКСТТЕКСТТЕКСТТЕКСТ
ТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТ ТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТ ТЕКСТТЕКСТ
ТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТ ТЕКСТТЕКСТТЕКСТ.<br />
</p>
<div class="links">
';
preg_match('#div class=.*><h.*>(.*)</h.*></div>.*<p><em>(.*)<br />.*</p>.*<div class=.*>#Us',$in,$res);
print_r($res);
?>
Всем привет, подскажите пожалуйста:
Сейчас у меня в скрипте вот такие url'ы:
lmap.php?act=free&id=27
Хочется сделать ЧПУ, вот так:
site.ru/free-7.html
Как правильно будет выглядеть строка в .htaccess?
Большое Спасибо! :)
RewriteRule ^/?([^-]+)-([^\.]+)\.html?$ lmap.php?act=$1&id=$2
вообщем проблема в .htaccess
ErrorDocument 404 /index.php
но при ошибке получаю как и раньше 404 Not Found , доступа к серверу нету но апач вроде нормально настроен , какие еще варианты?
поправочка , не редиректит ток html файлы
AkyHa_MaTaTa
17.03.2009, 19:49
вообщем проблема в .htaccess
ErrorDocument 404 /index.php
но при ошибке получаю как и раньше 404 Not Found , доступа к серверу нету но апач вроде нормально настроен , какие еще варианты?
Может в конфиге для AllowOverride (http://www.apache.ru/docs/fishki.html#AllowOverride) не установленно FileInfo(соответсвенно и ErrorDocument) а может и вообше AllowOverride в None
таки верно AllowOverride в ноне был , но как подключили не редиректятся html , сейчас буду суппорт по поводу FileInfo долбать
спасибо
Нужна регулярка выдирания даты с таких строк
<IMG SRC="/templates/GBv7_design/images/25.png" ALT=""> Сегодня, 18:00| <IMG SRC="/templates/GBv7_design/images/280.png" ALT="">
Pashkela
18.03.2009, 19:23
<?php
$in = '<IMG SRC="/templates/GBv7_design/images/25.png" ALT=""> Сегодня, 18:00| <IMG SRC="/templates/GBv7_design/images/280.png" ALT=""> ';
preg_match('#>(.*)\|#',$in,$res);
echo $res[1];
?>
Pashkela
Спасибо пашет, но надо именно регулярку.
Строчек много на странице таких.
Pashkela
18.03.2009, 19:51
preg_match_all('#>(.*)\|#',$in,$res);
print_r ($res);
PS: В первом варианте не регулярка? А что тогда? Хрен с маслом?
Надо много записей проверить - так и надо писать
Опять я не правильно написал.
Меняеться только дата, а <IMG SRC="/templates/GBv7_design/images/25.png" ALT=""> и | <IMG SRC="/templates/GBv7_design/images/280.png" ALT=""> постоянны
Pashkela
18.03.2009, 21:39
Ну, должно пахать, она и выцепляет между > и |
у меня пашет:
<pre>
<?php
$in = '
<IMG SRC="/templates/GBv7_design/images/25.png" ALT=""> Сегодня, 18:00| <IMG SRC="/templates/GBv7_design/images/280.png" ALT="">
<IMG SRC="/templates/GBv7_design/images/25.png" ALT=""> Сегодня, 18:00| <IMG SRC="/templates/GBv7_design/images/280.png" ALT="">
<IMG SRC="/templates/GBv7_design/images/25.png" ALT=""> Сегодня, 19:00| <IMG SRC="/templates/GBv7_design/images/280.png" ALT="">
<IMG SRC="/templates/GBv7_design/images/25.png" ALT=""> Сегодня, 20:00| <IMG SRC="/templates/GBv7_design/images/280.png" ALT="">
<IMG SRC="/templates/GBv7_design/images/25.png" ALT=""> Сегодня, 30:00| <IMG SRC="/templates/GBv7_design/images/280.png" ALT="">
';
preg_match_all('#>(.*)\|#',$in,$res);
print_r ($res);
?>
<pre>
Как я понял выдирать дату получиться токо таким способом, а чтоб дату выдерал Сегодня, 19:31 из
td height="17" background="/templates/GBv7_design/images/ntm_b.gif" class="newsinfo" ><a id="fav-id-63062" href="http://site.ru/index.php?do=favorites&doaction=add&id=63062"><img src="http://site.ru/templates/GBv7_design/dleimages/plus_fav.gif" onclick="doFavorites('63062', 'plus'); return false;" title="Добавить новость в закладки" align="absmiddle" border="0"></a>| <IMG SRC="/templates/GBv7_design/images/10.png" ALT=""> Добавил: <a onClick="return dropdownmenu(this, event, UserNewsMenu('href="http://site.ru/user/Mikolas777/"', 'href="http://site.ru/user/Mikolas777/news/"','Mikolas777', '4'), '170px')" onMouseout="delayhidemenu()" href="http://site.ru/user/Mikolas777/">Mikolas777</a> | <IMG SRC="/templates/GBv7_design/images/25.png" ALT=""> Сегодня, 19:31| <IMG SRC="/templates/GBv7_design/images/280.png" ALT=""> Просмотрело: 0 чел. | <IMG SRC="/templates/GBv7_design/images/28.png" ALT="">
$text =~ /25.png" ALT="">(.*?)\|/
mailbrush
19.03.2009, 20:03
Не знаю тут ли пишу, но как сделать в хтакцессе замену определенной строки во всех файлах (замену только тогда, когда скрипт открывается (т.е. замену расскрытий путей))?
mailbrush php_flag display_errors Off
mailbrush
20.03.2009, 17:06
спс, но ошибка все равно есть
Люди,хелпните ))
$str = "mail@mail.ru:12345";
Домен может быть bk.ru,list.ru и т.д.(после @).Вот регулярка:
#([a-z0-9A-Z_\.])+@([mail.ru|bk.ru|list.ru])[:]{1}(.)(4,16)#
Задумка такая: Нужно сохранять в разные переменные логин,домен и пароль.Пароль может состоять из любых символов,имея длину от 4 до 16 символов(Допустим),но результаты не выводятся:(.Значит,регулярк о неверна?
Люди,хелпните ))
$str = "mail@mail.ru:12345";
Домен может быть bk.ru,list.ru и т.д.(после @).Вот регулярка:
#([a-z0-9A-Z_\.])+@([mail.ru|bk.ru|list.ru])[:]{1}(.)(4,16)#
Задумка такая: Нужно сохранять в разные переменные логин,домен и пароль.Пароль может состоять из любых символов,имея длину от 4 до 16 символов(Допустим),но результаты не выводятся:(.Значит,регулярк о неверна?
#^([a-z0-9_\.]+)@(mail\.ru|bk\.ru|list\.ru)[:]{1}(.{4,16})$#i
смотри какой нужен синтаксис:
в [ ] указывается набор симвоолов.
Сразу после [] должна идти длина этих символов.
Длина указывается спец. символами(+,*,?) или {d1, d2}
() разделяет строку на части(в выходном масиве будет видно)
Люди,хелпните ))
$str = "mail@mail.ru:12345";
Домен может быть bk.ru,list.ru и т.д.(после @).Вот регулярка:
#([a-z0-9A-Z_\.])+@([mail.ru|bk.ru|list.ru])[:]{1}(.)(4,16)#
Задумка такая: Нужно сохранять в разные переменные логин,домен и пароль.Пароль может состоять из любых символов,имея длину от 4 до 16 символов(Допустим),но результаты не выводятся:(.Значит,регулярк о неверна?
/^(.*?)@((?:mail|bk|list)\.ru):(.{4,16})$/i
mailbrush
23.03.2009, 10:28
Есть строчка
<tag>String
String2
String3
etc...</tag>Как мне занести то, что между <tag></tag> в массив? Точнее какой символ обозначает перенос строки?
preg_match('#<tag>(.+)</tag>#m', $page, $match);
$res = explode("\n", $match['1']);
и все-таки
preg_match('#<tag>(.+)</tag>#ms', $page, $match);
$res = explode("\n", $match['1']);
']и все-таки
и все таки таки достаточно:
'#<tag>(.+)</tag>#s'
Точнее какой символ обозначает перенос строки?
Этот: \n
Если ты его используешь в строке, то только в строке обрамленной двойными кавычками.
']/^(.*?)@((?:mail|bk|list)\.ru):(.{4,16})$/i
Ээ нее,брат:).В логине нельзя юзать все символы:):):)
ph1l1ster
24.03.2009, 19:44
помогите с регуляркой под перл:
<a class="tiny" href="/admin/stop.html">stop.html</td><td bgcolor=red width="800">
<a class="tiny" href="/admin/start.php">start.php</td><td bgcolor=red width="800">
Нужно вытащить:
stop.html
start.php
пытаюсь:
<a class=\"tiny\" href=\"\/admin\/([^\s]+(?=\.(html|php))\.\2)\">
выводит:
stop.html
html
start.php
php
Pashkela
24.03.2009, 19:52
|<a class=.*href=.*>(.*)</td><td bgcolor=.*width=.*>|
Нужно вытащить:
stop.html
start.php
пытаюсь:
<a class=\"tiny\" href=\"\/admin\/([^\s]+(?=\.(html|php))\.\2)\">
выводит:
stop.html
html
start.php
php
а зачем расширения заносишь в подмаску? Лучше уже в символьный класс:
<a class=\"tiny\" href=\"\/admin\/([^\s]+(?=\.[html|php])\.\2)\">
.:EnoT:.
24.03.2009, 23:12
ph1l1ster ну с перлом я не дружу, но вариантов регулярок тонна.
Вот хотя бы две:
'#href="/admin/([^"]*)"#'
'#>([^<>]*)</#'
PaCo
Зачем в шаблон вносить данные которые совсем не нужны? (Хотя конечно зависит от конкретного случая, но всё же)
есть записаь типа
<tr>
<td>title:</td>
<td>body</td>
</tr>
как на выходе получить title:body ? при условии что это встречается не один раз в тексте...
снимаю вопрос.. допетрил сам))
протсо заменил не ннужные знаки preg_replace'ом )
.:EnoT:.
25.03.2009, 00:10
есть записаь типа
как на выходе получить title:body ? при условии что это встречается не один раз в тексте...
снимаю вопрос.. допетрил сам))
протсо заменил не ннужные знаки preg_replace'ом )
В догонку) Если без реплейса
preg_match_all('#<td>([^<>]*)</td>#', $str, $out);
echo join('', $out[1]);
вот имеется регулярка для замены кликабельных ссылок
preg_replace('~<a.*href="([^"]+)".*>.*</a>~Usi','$1',$row['full_news']);
пример: <a href="http://blablabla.bla">tralyalya</a>
-->
http://blablabla.bla
но она работает некоректно с highslid'ом (увеличение картинки при нажатии)
вот пример кода:
<a href="http://www.site.ru/polnoy_izobrajenie.jpg" onClick="return hs.expand(this)" ><img src="http://www.site.ru/umenshennoe_izobrajenie.jpg" style="border: none;" alt='alt alt alt' title='test test ' /></a>
и получаю вот что
http://www.site.ru/polnoy_izobrajenie.jpg
вот и собственно вопрос.. как доработать регулярку что бы не было такого?..
---------------------
и еще хотел спросить - как добавить поддержку исключение для замены для хоста - site.ru (т.е мой хост не ссылающийся на внешние ресурсы.)
спасибо.
-------------------
и накидать похожую регулярку только оставлять ссылки как есть и добавлять rel="nofollow" и ноиндекс
(пример тут http://sapehelp.ru/tools/noindex-generator/)
с меня как обычно много +сов
#Wolf#
По первому - как вариант:<a.*href="([^"]+)".*>.{3,}</a> т.е. если между тэгами "a" меньше 3 символов, то не заменять
Насчет ноиндекс - уже отвечали вроде: https://forum.antichat.ru/showpost.php?p=1057786&postcount=7837
#Wolf#
По первому - как вариант:<a.*href="([^"]+)".*>.{3,}</a> т.е. если между тэгами "a" меньше 3 символов, то не заменять
что то ничего не изменилось... как резало так и режет... :confused:
Насчет ноиндекс - уже отвечали вроде: https://forum.antichat.ru/showpost.php?p=1057786&postcount=7837
ох..совсем запямятовал что уже спрашивал :) ;)
#Wolf#
#<a.*href="([^"]+)".*>[^<]+</a>#Usi
']#Wolf#
#<a.*href="([^"]+)".*>[^<]+</a>#Usi
вобще вырезало все от первой картинки(с highslide) до последней ссылки
от <a и до самого последнего </a>
http://forum.antichat.ru/showpost.php?p=1195927&postcount=349
Pashkela
30.03.2009, 15:26
короче нефига не понял, но вот:
<pre>
<?php
$in = <<<HTML
<a href="http://www.site.ru/polnoy_izobrajenie.jpg" onClick="return hs.expand(this)" ><img src="http://www.site.ru/umenshennoe_izobrajenie.jpg" style="border: none;" alt='alt alt alt' title='test test ' /></a>
HTML;
preg_match ('|<a href="(.*)".*>.*</a>|Ui',$in,$rez);
print_r ($rez);
echo preg_replace ('|<a href="(.*)".*>.*</a>|Ui','$1' ,$in);
?>
</pre>
EST a1ien
30.03.2009, 16:06
Вроде небыло этой ссылочки.
Вот очень полезная штука.
http://gskinner.com/RegExr/
#Wolf# Как то так
$in = <<<HTML
<a href="http://www.site.ru/polnoy_izobrajenie.jpg" onClick="return hs.expand(this)" ><img src="http://www.site.ru/umenshennoe_izobrajenie.jpg" style="border: none;" alt='alt alt alt' title='test test ' /></a>
HTML;
echo preg_replace('~<a.*href="([^"]+)"(?(?!expand)[\s\S])*?>.*?</a>~si','$1',$in);
как из этого
<a id="ct_gv_ct_NAME" href="Default.aspx?action=go&PGIndex%3d0%26WPGOrderBy%3d">link_name</a>
выдрать саму ссылку?? в тексте встречается много раз....
как из этого
выдрать саму ссылку?? в тексте встречается много раз....
/<a id=\"ct_gv_ct_NAME\" href=\"(.*?)\">.*?<\/a>/
попробуй
Pashkela
31.03.2009, 11:10
<?php
$in = '<a id="ct_gv_ct_NAME" href="Default.aspx?action=go&PGIndex%3d0%26WPGOrderBy%3d ">link_name</a>';
preg_match_all('|a id=.*href="(.*)">.*</a>|Ui',$in,$rez);
print_r($rez);
?>
Pashkela, выдает типа этого....
[22] => a id="ct_gv_ct_NAME" href="Default.aspx?act6WPGOrderBy%3d">link</a>
[23] => a id="ct_gv_ct_NAME" href="Default.aspx?act6WPGOrderBy%3d">link</a>
Pashkela
31.03.2009, 12:23
это в $rez[0][...], а в $rez[1][...] загляни
вот часть текста
<img src="http://s.bash.org.ru/img/ukl5a13h062cah7b390648.jpg" id="cm_strip" /><br>
меняеться только текст от img/ до .jpg их 23 символа
какая будет регулярка ?
сначало думал что так
\<img src\=\"http\:\/\/s\.bash\.org\.ru\/img\/[0-9a-z]{23}.jpg\" id\=\"cm_strip\" \/\>\<br\>
но ошибка вылазит
.:EnoT:.
01.04.2009, 18:26
SVAROG
Зависит от количества ссылок подходящим шаблону регулярки. Если парситься и левые ссылки будут, то добавляй в шаблон и другие элементы..
$str = '<img src="http://s.bash.org.ru/img/ukl5a13h062cah7b390648.jpg" id="cm_strip" /><br>';
preg_match_all('#img/([^\.]*).jpg#i', $str, $out);
print_r($out[1]);
з.ы. я там насчитал только 22 символа ))
Pashkela
01.04.2009, 19:38
<pre>
<?php
$str = '<img src="http://s.bash.org.ru/img/ukl5a13h062cah7b390648.jpg" id="cm_strip" /><br>';
preg_match_all('|img/(.*).jpg|i', $str, $out);
echo strlen($out[1][0])."\n";
print_r($out[1]);
?>
</pre>
draliokero
05.04.2009, 13:10
Как найти и дописать после <body onload="blabla" style="blabla"> строку?
mailbrush
05.04.2009, 13:35
<?
$write='строка для дописи'; //строка для дописи
$str='<body onload="blabla" style="blabla">'; //сама строка
$str=preg_replace("#<body onload=\".*\" style=\".*\">#",$str.$write,$str); //добавляем
echo $str;
?>
<?
$write='строка для дописи'; //строка для дописи
$str='<body onload="blabla" style="blabla">'; //сама строка
$str=preg_replace("#<body onload=\".*\" style=\".*\">#",$str.$write,$str); //добавляем
echo $str;
?>
$str = preg_replace('|<body onload="(.*)" style="(.*)">|','|<body onload="$1" style="$2"> my name is m0hze!111|',$page);
Помоему както так,проще.
Как в robots.txt запретить URL'ы вида:
Neki-tekst-v-urle-m9.html
т.е. где есть
-m[число].html
Заранее благодарен!
Pashkela
06.04.2009, 12:00
http://robotstxt.org.ru/
2Pashkela: Спасибо, но не особо помогло.
Пробую делать вот так:
Disallow: /*-m(\d{2}).html
или так
Disallow: /*-m([0-9]*).html
Но увы, это не даёт желаемого результата.
Помогите пожалуйста!
Pashkela
06.04.2009, 16:24
Ссылка была дана для того, чтобы тебе стало понятно, что robots.txt никоим образом не относится к тем вещам, что ты хочешь сделать. То, что тебе надо изучать в твоём случае - .htaccess
http://www.google.ru/search?hl=ru&q=.htaccess+%D0%B7%D0%B0%D0%BF%D1%80%D0%B5%D1%82%D 0%B8%D1%82%D1%8C+url&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=
Google понимает регулярные выражения в robots.txt и .htaccess здесь ни при чём
.:EnoT:.
06.04.2009, 16:43
типа так:
<FilesMatch "Neki-tekst-v-urle-m[\d{2}]\.html$">
Deny from all
</FilesMatch>
Pashkela
06.04.2009, 17:16
Google понимает регулярные выражения в robots.txt и .htaccess здесь ни при чём
ну попробуй так:
Disallow: Neki-tekst-v-urle-m[\d{2}]\.html$
только как ты собрался это проверять - непонятно
ну попробуй так:
Disallow: Neki-tekst-v-urle-m[\d{2}]\.html$
только как ты собрался это проверять - непонятно
Google WebMaster Tools -> Analyze robots.txt
Ниодин из примеров не работает, но всё равно всем спасибо! :rolleyes:
Помогите выдрать ссесию из страницы:
тоесть есть страница с хедером: ( ... Set-Cookie: bb_test=1835118987; ... )
код
preg_match('#Set-cookie: (.*?);#uism', $res, $match_session);
echo $match_session[1];
Выдаёт пустоту((
Уже уйму вариантов перепробовал, не выходит((
.:EnoT:.
06.04.2009, 18:42
<?php
$res = '... Set-Cookie: bb_test=1835118987; ... ';
preg_match('#bb_test=([^;]*)#', $res, $match_session);
echo $match_session[1];
?>
$pat = '|<td class="contentheading">(.*?)<\/td>|is';
$html='<table class="contentpaneopen">
<tbody><tr>
<td valign="top">
<span class="small">
Written by Author </span>
</td>
</tr>
<tr>
<td class="contentheading">
Hot news </td>
</tr>
<tr>
<td valign="top">
<p>Today it good day for me</p>
Im made grabs bots<p> </p><p>It easy grab link from other site </p></td>
</tr>
</tbody></table>
' ;
$total = preg_match_all($pat,$html,$poc) ;
echo "<pre>";
print_r($poc);
/* Как например поместить остальные карманы между
<p> <p> и <span class="small">
</span>
*/
Можна ли это сделать ток одной функцией
preg_match_all()
.:EnoT:.
07.04.2009, 03:20
Можно.
<?php
$html='<table class="contentpaneopen">
<tbody><tr>
<td valign="top">
<span class="small">
Written by Author </span>
</td>
</tr>
<tr>
<td class="contentheading">
Hot news </td>
</tr>
<tr>
<td valign="top">
<p>Today it good day for me</p>
Im made grabs bots<p> </p><p>It easy grab link from other site </p></td>
</tr>
</tbody></table>
' ;
/* Как например поместить остальные карманы между
<p> <p> и <span class="small">
</span>
*/
preg_match_all('#(contentpaneopen|contentheading|s mall|p)["]?>[\r\n\s]*([^>]+)</(td|span|p)#is', $html, $poc);
echo "<pre>";
print_r($poc[2]);
?>
Результ:
<pre>Array
(
[0] => Written by Author
[1] => Hot news
[2] => Today it good day for me
[3] =>
[4] => It easy grab link from other site
)
З.Ы. Пробелы не забудь убрать из регулярки
RewriteRule ^mess/(\d+) /index.php?display=mess&type=$1 [QSA]
как добавить в регулярку запятые?
сейчас она парсит такое:
server.ru/mess/10
а надо:
server.ru/mess/10,12,14
Как заставить MOD REWRITE работать с кирилицей?
RewriteRule ^работа index.php?module=works
Не воспринимает....
И так тоже
RewriteRule ^%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0 index.php?module=works
а, всё
RewriteRule ^reg/errors/([\w\d\,]+) /index.php?display=reg&errors=$1 [QSA]
спасибо
Byrger
сохрани файл в utf-8 (without BOM - если есть такая опция)
RewriteRule ^работа/([a-zA-Zа-яА-Я0-9]+)/ index.php?module=works&action=work&link=$1
А как сделать чтоб . _ - воспринимались?
И ещё ... почему не работат?
RewriteRule ^работа index.php?module=works
RewriteRule ^работа/1.html index.php?module=works&action=work&link=adenkiru
2ой случай
dinar_007
14.04.2009, 15:05
RewriteRule ^работа/([a-zA-Zа-яА-Я0-9]+)/ index.php?module=works&action=work&link=$1
А как сделать чтоб . _ - воспринимались?
Слэш точка
И ещё ... почему не работат?
RewriteRule ^работа index.php?module=works
RewriteRule ^работа/1.html index.php?module=works&action=work&link=adenkiru
2ой случай
А с какого перепугу тут русскими буквами написано вообще?
Поступает текст с переходом на новую строку из текстарии (\n), но не знаю как правильно это оформить, пишу:
|^[\s.]{3,300}$|i
Подскажите в чём ошибка
Pashkela
15.04.2009, 15:42
Задачу конкретизируй, что выцепить-то надо из текстарии? если есть "\n", то юзай модификтор "s"
Выцепить ничего не надо, это банальная проверка "удовлетворяет ли количество символов в переменной заданному интервалу"
Pashkela
15.04.2009, 15:51
strlen($str)
не?
есть валидатор строки на яваскрипте
(/[0-9a-z\_\-]/i).test(name)
но вот беда - пропускает как минимум "!"
мне надо чтобы имя содержало только латинские символы, цифры, _, и тире
помогите пажалусто
strlen($str)
не?
блин, представь добавление комментария, если комментарий не короче трёх и не длиннее трёхсот, то вернётся тру, если тру - произвести запись, если фол - выдать ошибку
$pregUC = preg_match('|[\s.]{3,300}|i',$_POST['userComment']);
оО
Бери просто,коментарий в скобки вида: "Коментарий";
Это - массив с буквами.
Далее можно просто count($commect) > 3 < 300 и все,и незачем себя нагружать регулярками.
mailbrush
15.04.2009, 16:18
if(strlen($str)>3 and strlen($str)<300) echo true;
Pashkela
15.04.2009, 16:19
блин, представь добавление комментария, если комментарий не короче трёх и не длиннее трёхсот, то вернётся тру, если тру - произвести запись, если фол - выдать ошибку
PHP код:
$pregUC = preg_match('|[\s.]{3,300}|i',$_POST['userComment']);
if (strlen($_POST['userComment'])>=3 && strlen($_POST['userComment'])<=300) echo 'Good' ;
else echo 'Bad';
astrologer
15.04.2009, 20:01
есть валидатор строки на яваскрипте
(/[0-9a-z\_\-]/i).test(name)
но вот беда - пропускает как минимум "!"
мне надо чтобы имя содержало только латинские символы, цифры, _, и тире
помогите пажалусто
/^[-\w]+$/
нужна регулярка
checkproxy.com
atomintersoft.com
my-proxy.com
smsreklama.ru/proxy/
freeproxy.ru
aliveproxy.com
proxyhunter.net
http://www.freeproxy.ch
http://www.haozs.net
http://notan.h1.ru/hack/xwww/proxy6.html
http://equ.hut1.ru/?set=proxy
http://proxylist.blogspot.com/
http://proxylist.h12.ru/america.htm
нужно выделить отдельно домен и страница если есть
типо
domen.ru и /page/page.html
задача облегчается можно без http://
erihtoney
16.04.2009, 01:12
<?
$text = "http://forum.antichat.ru/showthread.php?p=1226589";
preg_match("/^(http:\/\/)?([^\/]+)/i", $text, $matches);
$host = $matches[2];
echo("$host");
echo("<br>");
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
echo "домен: {$matches[0]}\n";
$file=$text;
preg_match("/^(http:\/\/)(\S+\/)(.*)/i", $file, $file_m);
echo "<br />файл: {$file_m[3]}\n";
?>
Если каталогов два и больше,то:
<?
$text = "http://www.google.ru/intl/ru/about.html";
$array = split ("\/", $text);
foreach($array as $index => $key)
{
echo("$index -> $key <br />");
}
?>
спасибо я уже сделал
регулярка
"^(.*?)(\/(.*))?$"
smsreklama.ru
smsreklama.ru/proxy/
http://smsreklama.ru/proxy/
http://wwww.smsreklama.ru/proxy/
www.smsreklama.ru/proxy/page1.html
[('smsreklama.ru', '', '')]
[('smsreklama.ru', '/proxy/', 'proxy/')]
[('smsreklama.ru', '/proxy/', 'proxy/')]
[('wwww.smsreklama.ru', '/proxy/', 'proxy/')]
[('www.smsreklama.ru', '/proxy/page1.html', 'proxy/page1.html')]
это с питона и я отрезаю "http://"
может кому пригодится
http://www.php.net/manual/ru/function.parse-url.php
Здравствуйте..Как сделать редирект..Есть ссылка
http://100mbps.ru/?pid=111&bid=3
Необходимо что бы при переходе на данную ссылку пользователь перенаправлялся на страницу
http://billing.100mbps.ru/?pid=111&bid=3&type=banner&redirect=1
Переменные pid и bid динамичны и меняют све значение...
редирект с host.ru на host.net
нужно сделать чтобы при переходе по ссылке вида http://host.ru/blablabla
(неважно что в урле после host.ru хоть host.ru/index.php )
чтобы редиректило всегда на host.net
ах да... permanent (301 — документ перемещен постоянно)
#Wolf# Как то так
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?host\.ru [NC]
RewriteRule ^.*$ http://host.net/ [L,R=301]
Как проверить является ли строка IP адресом.
Т.е. например 127.0.0.1 верно, а 266.0.0.1 неверно?
Мне кажеься,что,бить на части по точкам,и проверять < 255
erihtoney
20.04.2009, 16:03
<?
$ip=$_SERVER['REMOTE_ADDR'];
$array_ip=split("\.",$ip);
if($array_ip[0]<=255 && $array_ip[1]<=255 && $array_ip[2]<=255 && $array_ip[3]<=255)
{
echo "OK";
}
else
{
echo "Error";
}
?>
Почему-то ничего больше на ум не приходит,кроме данного способа.
Pashkela
20.04.2009, 17:42
<?php
function validateIpAddress($ip_addr) {
if(preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$ip_addr)) {
$parts=explode(".",$ip_addr);
foreach($parts as $ip_parts) {
if(intval($ip_parts)>255 || intval($ip_parts)<0)
return false;
}
return true;
}
else
return false;
}
// Пример использования:
if (validateIpAddress('1000.2.3.4')) echo 'Валидный IP';
else echo 'Невалидный IP';
?>
А ip2long кто отменил? False в случае невалидности.
А ip2long кто отменил? False в случае невалидности.
Не всегда все так просто:
<?
for ($i=0; $i<=255; $i++)
{
$out="1.1.1.1".chr($i)."numb of char $i<br>";
if(ip2long($out)) echo $out;
}
У меня такой вопрос как можно с помошью .htaccess заставить 1-у картинку из множества с одинаковым расширением(.gif,.jpeg, etc) интерпритироваться как php код, то есть в например в дириктории множества картинок с одинаковым расширением и мне нужно как то одну едиственную с вполне конкретным именнем(допустим shell.gif) заставить выполняться как php а все остальные по прежнему имели mime type картинки, реально ли это зделать через .htaccess?
Pashkela
20.04.2009, 23:40
<Files "shell.gif">
AddType application/x-httpd-php .gif
</Files>
Доброго времени суток, у меня маленький вопрос, допустим есть такой html:
<table align="center" width="80%"><tr><td> google.ru </td><td>PR:<b><font color=green> 2 </font></b>тИЦ:<b><font color=red> 10 </font></b></td></tr><tr><td> mail.ru </td><td>PR:<b><font color=green> 7 </font></b>тИЦ:<b><font color=red> 1700 </font></b></td></tr></table>
какой патерн более разумно использовать если мне надо выдрать данные в таком виде:
google.ru PR:2 тИЦ:10
mail.ru PR:7 тИЦ:1700
Никакой, если в скрипте нужно просто такие строки выводить
<?
$in = '<table align="center" width="80%"><tr><td> google.ru </td><td>PR:<b><font color=green> 2 </font></b>тИЦ:<b><font color=red> 10 </font></b></td></tr><tr><td> mail.ru </td><td>PR:<b><font color=green> 7 </font></b>тИЦ:<b><font color=red> 1700 </font></b></td></tr></table>';
$in = str_replace('</tr><tr>','<br />',$in);
echo strip_tags($in,'<br>');
?>
Ну примерно так я и делал, но мне это не понравилось вот и хотел как вытянуть регуляркой(че то потерн не выходит), да в html есть и еще таблицы и много другого контента, я например делаю так :
$in =<<<HTML
Здесь html в то числе и таблицы с <tr> <td>
........
а вот эта таблица уникальна(в смысле в коде больше не встречаеться):
<table align="center" width="80%"><tr><td> google.ru </td><td>PR:<b><font color=green> 2 </font></b>тИЦ:<b><font color=red> 10 </font></b></td></tr><tr><td> mail.ru </td><td>PR:<b><font color=green> 7 </font></b>тИЦ:<b><font color=red> 1700 </font></b></td></tr></table>
...... еще htm
HTML;
preg_match('#<table align="center" width="80\%">(.*)</table>#sU',$in ,$match);
$match=!empty($match[1]) ? array_map('strip_tags',explode('</tr>',rtrim($match[1],'</tr>'))) : null;
print_r($match);
Чтото я голову поломал,но тут пооже ключи нужны какието прописывать, а я вот кроме Ui ничего незнаю,точнее как работает,именно.
Вот в чем сама проблема.
Есть
$text = 'Hello http://allow.url/preg/match.php Hello allo';
Необходимо получить, ссылку,и только ссылку.
И да,может быть вариант с https, Как это прописываеться в регулярке?
Ествевственнл,сылка может быть разного формата с слешом на конце,так и прочие варианты.
Pashkela
28.04.2009, 20:30
Думаю универсальной на все случаи жизни в данном случае не придумать, обязательно должно быть какое-то ограничение справа, либо расширение нужное, либо слеш, либо ">" и etc., вот вариант со слешем:
<?php
$text='Hello http://allow1.url/preg/match.php/ Hello allo https://allow2.url/preg/match.php/ ла-ла http://allow3.url/preg/match.php/ sss https://allow4.url/preg/match.php/';
preg_match_all("#(http://.*/.*/.*/)|(https://.*/.*/.*/)#Ui", $text, $res);
print_r($res);
?>
а вот вариант с заданным расширением (фактически просто ограничитель справа, слеш есть или нет в конце ссылки - значение не имеет особого, думаю объяснять не надо, http://sait/admin и http://sait/admin/) в итоге дадут одинаковый результат):
<?php
$text='Hello http://allow1.url/preg/match.php Hello allo https://allow2.url/preg/match.php ла-ла http://allow3.url/preg/match.php/ sss https://allow4.url/preg/match.php/';
preg_match_all("#(http://.*/.*/.*php)|(https://.*/.*/.*php)#Ui", $text, $res);
print_r($res[0]);
?>
либо парсить ссылки включая "<a href='kfkfkfkfkf'>название_ссылки</a>", что вообще-то более правильно и действительно универсальнее
Т.е. принцип составления ЛЮБОГО регулярного выражения простой - должно быть НАЧАЛО и должен быть КОНЕЦ, как это не странно. Если спошлняковый текст (не имена файлов и т.д., если проводить аналогию с поиском, там ОГРАНИЧЕННЫЙ текст. А тут - сплошняк сплошной.
ЗЫЖ: Вроде бы:) Если не прав - думаю поправят
Думаю универсальной на все случаи жизни в данном случае не придумать, обязательно должно быть какое-то ограничение справа, либо расширение нужное, либо слеш, либо ">" и etc., вот вариант со слешем:
<?php
$text='Hello http://allow1.url/preg/match.php/ Hello allo https://allow2.url/preg/match.php/ ла-ла http://allow3.url/preg/match.php/ sss https://allow4.url/preg/match.php/';
preg_match_all("#(http://.*/.*/.*/)|(https://.*/.*/.*/)#Ui", $text, $res);
print_r($res);
?>
а вот вариант с заданным расширением (фактически просто ограничитель справа, слеш есть или нет в конце ссылки - значение не имеет особого, думаю объяснять не надо, http://sait/admin и http://sait/admin/) в итоге дадут одинаковый результат):
<?php
$text='Hello http://allow1.url/preg/match.php Hello allo https://allow2.url/preg/match.php ла-ла http://allow3.url/preg/match.php/ sss https://allow4.url/preg/match.php/';
preg_match_all("#(http://.*/.*/.*php)|(https://.*/.*/.*php)#Ui", $text, $res);
print_r($res[0]);
?>
либо парсить ссылки включая "<a href='kfkfkfkfkf'>название_ссылки</a>", что вообще-то более правильно и действительно универсальнее
Т.е. принцип составления ЛЮБОГО регулярного выражения простой - должно быть НАЧАЛО и должен быть КОНЕЦ, как это не странно. Если спошлняковый текст (не имена файлов и т.д., если проводить аналогию с поиском, там ОГРАНИЧЕННЫЙ текст. А тут - сплошняк сплошной.
ЗЫЖ: Вроде бы:) Если не прав - думаю поправят
Спасибо,просто статьи про регулярки читал,но так для общего развития,такие регулярки и сам состаить могу конечно,но думал можно чтото типо http||https условий в них вставлять,вот эксперементирую =)
Pashkela
28.04.2009, 23:22
а и вставленно http|https, просто расширенно
preg_match_all('~https?://\S+~i',$in,$out); В урле не должно быть пробельных символов.
Alekzzzander
30.04.2009, 16:35
у меня вопрос, как из форума выдрать кол-во репы, дату реги, кол-во сообщений, ник
форум на вобле, (в принципе пример ачата думаю поможет) и желательно с разъяснением если сможет кто
Ты выкинь кусок кода,где расположено то что тебе нужно сюда.
Тогда помогем
Alekzzzander
30.04.2009, 17:19
Возьмем в пример ачат
де та выцепил часть кода, по его примеру для другого форума смог сделать только репу
<?php
//chek on antichat
$id = 41269; //id на ачате
$summ = 0; //начальное кол-во репы.
$all = 0; //всего поставленно
$content = file_get_contents("http://forum.antichat.ru/view_reputation.php?userid={$id}&count=11111111111111111");
preg_match_all('#<nobr><b>\+([0-9]{1,5})</b></nobr>#i',$content,$pluses);
preg_match_all('#<nobr><b>\-([0-9]{1,5})</b></nobr>#i',$content,$minuses);
foreach($pluses['1'] as $plus)
{
$summ += $plus;
$all++;
}
foreach($minuses['1'] as $minus)
{
$summ = $summ - $minus;
$all++;
}
echo 'Количество репутации: '.$summ.'<br>Всего поставлено: '.$all.' раз<br><br>';
?>
Далее надо выцепить ник, в исходном коде это такой кусок:
<div style="font-size:18pt">Alekzzzander</div>
<div class="smallfont">Участник форума</div>
(для примера взял ещё и статус)
далее идем на кол-во сообщений, исходный код:
<legend>Сообщения</legend>
<table cellpadding="0" cellspacing="3" border="0">
<tr>
<td>
Всего сообщений: <strong>118</strong>
далее дата реги:
<div class="fieldset">
<div style="padding:3px">
Регистрация: <strong>05.09.2007</strong>
</div>
</div>
<?
$nick = '<div style="font-size:18pt">Alekzzzander</div>';
$messg ='Всего сообщений: <strong>118</strong>';
$reg ='Регистрация: <strong>05.09.2007</strong> </div> </div>';
preg_match('#<div style="font-size:18pt">(.*)</div>#',$nick,$name);
preg_match('#Всего сообщений: <strong>([0-9]+)</strong>#',$messg,$post);
preg_match('#Регистрация: <strong>(.*)</strong>#',$reg,$date);
print_R($date);
print_R($name);
print_R($post);
?>
Ну это совсем примитивный вариант
Alekzzzander
30.04.2009, 17:33
ну если я захочу сделать для каждого человека свое этот вариант же не прокатит, именно поэтому и написал сюда :) мне надо что бы из всей страницы я мог ввести id юзера и тут же мне показываело эти данные
strecher
30.04.2009, 18:00
Написал пару примеров регулярок для дрима:
Dreamweaver regular expressions!
----------------------------------------------
From - <td> id </td>
To - <td> ".$row['id']." </td>
Search: <td>\s([a-zA-Z0-9]{1,30})\s</td>
Replace with: <td> ".$row['$1']." </td>
----------------------------------------------
From - id
To - $id = @$_POST['id'];
Search: ([a-z]{1,20})
Replace with: $$1 = @$_POST['$1'];
----------------------------------------------
p.s. Adobe / Macromedia Dreamweaver.
ну если я захочу сделать для каждого человека свое этот вариант же не прокатит, именно поэтому и написал сюда :) мне надо что бы из всей страницы я мог ввести id юзера и тут же мне показываело эти данные
Это не для каждого по отдельности,я просто пример привел ,где все в отдельных переменных.Поменяй переменную на одну везде и всо
Alekzzzander
30.04.2009, 18:33
Это не для каждого по отдельности,я просто пример привел ,где все в отдельных переменных.Поменяй переменную на одну везде и всо
сделал, в эта переменна содержит в себе ссылку на анкету и вот что выдало....
Array
ph1l1ster
30.04.2009, 22:39
Alekzzzander, Давай ссылку на страницу и всё тебе сделаем!!
Alekzzzander
01.05.2009, 10:47
говорю же, данные с ачата! кол-во сообщений, репа, ник, дата реги, звание, все данные с ачата
ссылка должна содержать в себе id юзера и именно по этому юзеру должны выводиться данные
как тут:
http://nfdesign.org.ua/bar/informer.php?id=41269
Кто-нибудь может помоч с составлением универсальной регулярки?
Вот что мне нужно:
Получить тело ссылки: <a href="URL" rel="">Anchor</a>
Нужно вытянуть :
URL
Anchor
dofollow ссылка или нет
Буду рад любым ответам, возможно кто-то встречал готовое решение...
OnArs Как то так header('Content-Type: text/plain');
$in = '<a href="URL" rel="">Anchor</a><a href="URL" rel="nofollow">Anfssahor</a><a href="URL" rel="">Anchor</a><a href="URL" rel="">Anchor</a>';
preg_match_all('~<a[^>]*href="([^"]+)"[^>]*(?:rel="([^"]*)")?>(.*)<\/a>~Umsi', $in, $out, PREG_SET_ORDER);
print_r($out);
foreach ($out as $one)
{
if (strtolower($one[2])=='nofollow') echo 'NoFollow link: '.$one[3]."<br/>";
}
подскажите регулярку для выдирания мыл
Sharky \w+@\w+\.\w{2,5}
preg_match('#\w+@\w+\.\w{2,5}#','я_типо_мы о@а_типо_доменю.ююю',$match);
print_r($match);
на русской локале:
Array ( [0] => я_типо_мыло@а_типо_доменю.юю ю )
подскажите регулярку для ссылок выдачи яндекса
мои изыскания закончились на этом:
;" href="(.*?)" target="_blank">
делаю на питоне, поэтому код думаю будет не в кассу
пасибки!
laedafess
13.05.2009, 09:56
#;" href="(.+?)" target#
2laedafess:
ок, я пошел дальше и получил
;" href="(.+?)" t
насколько это будет обоснованно?
iv. Какая цель стоит? Извратиться и сделать покороче? А смысл, быстрее работать не будет (10^-8 секунды разницы - не в счет)
|^([0-9]+d?|list)$|Что не так?
Warning: preg_match() [function.preg-match]: Unknown modifier 'l' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\php\xdf\rgb\index.php on line 187
Pashkela
14.05.2009, 22:47
первый и последний сделай не | тогда, а # например
Включил МодРеврайт и не подгружаются картинки и скрипты.
Как быть? Только не надо говорить что прописывать полный путь
Byrger Экстрасенсы в отпуске. Где файл htaccess и в какой он кодировке?
Byrger Экстрасенсы в отпуске. Где файл htaccess и в какой он кодировке?
Он почемуто вообще похоже не работает...
VertigoServ стоит....
А фаил в UTF 8 BOM
Byrger БОМ - портит данные, сохраните в ANSI лучше, и содержимого .htaccess вы не выложили
RewriteEngine On
RewriteBase /
RewriteRule ^ index.php
RewriteRule ^(.*)/(.*)/ index.php?t=$1&f=$2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)$ /index.php
Вроде немного начал работать...
А как сделать если допустим f=123/asd Он такое не воспринимает...
Пиплы! Захотелось вот написать парсер ящиков от mail.ru(возможно,и других,но пока хватает и этого)
Вроде всё норм,но когда вот дохожу до количества писем,обламываюсь регуляркой:
<?php
$i = 0;
$ch = curl_init();
$url = "http://xhtml.wap.mail.ru/cgi-bin/auth?rand=3512944353";
$url1 = "http://xhtml.wap.mail.ru/cgi-bin/msglist?folder=0";
$url2 = "http://xhtml.wap.mail.ru/cgi-bin/start";
$req = "Login=welya.icq&Domain=mail.ru&Password=ko4ka&page=&submit=Вход";
$ua = "IE 6.0";
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cookie");
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$req);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$res = curl_exec($ch);
curl_close($ch);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cookie");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$res = curl_exec($ch);
if(preg_match_all("|<a class=\"lnk_b\" href=\"(.*)\">(.*)</a><br />|",$res,$r)) {
foreach($r[2] as $v) {
if(strlen($v) == 213) {
$i++;
}
}
}
curl_close($ch);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url2);
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cookie");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$res = curl_exec($ch);
if(preg_match("|Тут_Шаблон_Для_Выдирания_Ч сла_Входящих_Писем|",$res,$t)) {
print_r($t);
}
?>
Это далеко не готовый скрипт,а лишь наработка.Проблема состоит именно в том,какая регулярка нужна для выдирания Входящих писем.Там куча символов...пробовал,ничего не возвращает.Может,дабы не мучиться,скажете,есть ли такие программы в свободном обиходе?)(Парсинг определённых заголовков писем и его содержимым).
Эм-м, а ключевое слово "Входящие" и число напротив не подходят?
Нет,не работает:(.Пробовал
Pashkela
20.05.2009, 20:24
Всего писем (адрес страницы сам знаешь, там где написано "Входящие"):
<?php
$in='title="Входящие">Новых писем: <b>8</b></a>';
preg_match('|title="Входящие">Новых писем: <b>(.*)</b></a>|Ui',$in,$res);
print_r ($res[1]);
?>
Заголовки писем (уже внутри "Входящие"):
<?php
$in='<td class=lettem><a href="readmsg?id=12409073890000010683">Автомобильные пробки в реальном времени на Картах@Mail.Ru </a></td>';
preg_match_all('|<td class=lettem><a href=".*">(.*)</a></td>|Ui',$in,$res);
print_r ($res[1]);
?>
как регулярке указать промежуток от нуля до 255? чего-то я забыл
preg_match('|^[0-255]{1,3}$|',$_POST['ipPart3'])
Ru}{eeZ Никак.
if (is_numeric($_POST['ipPart3']) && intval($_POST['ipPart3'])>0 && intval($_POST['ipPart3'])<255)
Эээ,Паш,не знаю,где ты нашёл там это:),но я этого не видел.Зато смог сам разобраться не без твоей помощи:).:
<?php
$i = 0;
$url = "http://xhtml.wap.mail.ru/cgi-bin/auth?rand=3512944353";
$page = 1;
$links = array();
$messages = array();
$url1 = "http://xhtml.wap.mail.ru/cgi-bin/msglist?folder=0";
$req = "Login=welya.icq&Domain=mail.ru&Password=ko4ka&page=&submit=Вход";
$ua = "IE 6.0";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cookie");
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_NOBODY,0);
curl_setopt($ch,CURLOPT_POSTFIELDS,$req);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$res = curl_exec($ch);
if(preg_match_all('|<strong>[0-9]{1,10}</strong> (.*)|',$res,$m)) {
foreach($m[1] as $m1) {
echo "<center>Входящие: $m1 </center><br>";
break;
$x = $m1/5;
$x = round($x);
}
}
curl_close($ch);
/* ///////////////////////////////////////////// */
$theme = "Forum.Злой.org <password@zloy.org>";
while($page < $x) {
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cookie");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$res = curl_exec($ch);
if(preg_match_all('|<a class="lnk_b" href="(.*)"><b>(.*)</b></a><br />|',$res,$m)) {
echo "<center>Ссылки на сообщения</center><br>";
foreach($m[1] as $d) {
echo "<center>$d</center>";
$links[] = $d;
}
echo "<br>";
echo "<center>Список тем:</center><br>";
foreach($m[2] as $d1) {
echo "<center>$d1</center>";
$messages[] = $d1;
}
}
curl_close($ch);
/* ///////////////////////////////////////////////////////////////// */
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"http://xhtml.wap.mail.ru/msglist?folder=0&page=$page");
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cookie");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$res = curl_exec($ch);
curl_close($ch);
}
?>
Запара теперь с циклом прогона страниц.По идее,всё правильно.Сначала выводит ссылки на сообщения и сами темы,потом делает запрос на следующую страницу,потом всё сначала,а выходит,что он выводит только Входящие сообщения и отрубается.Ещё проблема состоит в том,как посчитать количество сообщений(Входящих),и одновременно убрать переменную из цикла...А то скрипт при переходе на каждую страницу будет пытаться считать количество входящих сообщений заного,что не есть хорошо.У кого какие идеи ?
ЗЫ: Для тестов я брал другое мыло.
подскажите регулярку для выделения домена из ссылок.
т.е. дано:
domain.com
www.domain.com
qwe.domain.com
qwe.rty.domain.com
...
qwe.rty.domain.com/index.html
...
надо чтобы по всем этим строкам выдавалось domain.com
дальше этого не думается:
([^/]*)
эта регулярка берет всё пока не встречает символ "/"
надо ещё избавится от поддоменов и оставить строки типа "domain.com", если они уже в таком виде
спасибо
пс: питон
iv. Непонятно в каком виде исходный текст, если в каждой строчке по адресу - то будет так
import re
dom = 'domain.com\r\nwww.domain.com\r\nqwe.domain.com\r\ nqwe.rty.domain.com\r\nqwe.rty.domain.com/index.html'
out = re.findall(r'(\w+\.\w+)[\s/<>"\']',dom)
print set(out)
Непонятно в каком виде исходный текст, если в каждой строчке по адресу - то будет так
Не совсем осознал как работает (\w+\.\w+)[\s/<>"\'] ну ладно. Исходный текст на самом деле в хтмл и ссылка находится в теге <cite>. Ну и так я собственно получаю url до слэша:
<cite>([^/]*)</cite>
Нужно получить домен 2 уровня из этого дела.
iv. Странно, что ваша регулярка вообще работает. Она забирает все, что находится внутри тегов <cite/> если там не содержится слеш
И чем вам моя не нравится? Если забирает много ненужного, тогда так:
import re
dom = '''<cite>domain3.com</cite>sad ja sad. asda da.das asda. asdasdaswq.
sadas awe.q eqw .eqweqwe .qw eqwesa . <cite>www.domain3.com</cite>
<cite>qwe.domain1.com</cite> Lorem ipsum sit amet
<cite> http://qwe.rty.domain1.com</cite>
<cite>qwe.rty.domain2.com/index.html</cite>'''
out = re.findall(r'''<cite>.*?(\w+\.\w+)[\s/<>"']''',dom)
print set(out)
Все домены второго уровня без повторов
помогите мне сделать регулярку чтобы проверяла чтобы в тексте было или <a href="текст" alt="текст">Текст</a> или <a href="текст" alt="текст"><img scr="текст" alt="Текст" /></a>. Чтобы проверяло или есть что то из этого но ничего кроме
mailbrush
04.06.2009, 20:54
#<a href=".*" alt=".*">.*</a>|<a href=".*" alt=".*"><img scr=".*" alt=".*" \/></a>#
помогите мне сделать регулярку чтобы проверяла чтобы в тексте было или <a href="текст" alt="текст">Текст</a> или <a href="текст" alt="текст"><img scr="текст" alt="Текст" /></a>. Чтобы проверяло или есть что то из этого но ничего кроме
хм? какой текст?
"<a href="[-_a-zA-Z\. /]+" alt="[-_a-zA-Z\. /]+">[-_a-zA-Z\. /]+</a>|<a href="[-_a-zA-Z\. /]+" alt="[-_a-zA-Z\. /]+"><img scr="[-_a-zA-Z\. /]+" alt="[-_a-zA-Z\. /]+" /></a>"
либо тупо любые символы:
"<a href=".+" alt=".+">.+</a>|<a href=".+" alt=".+"><img scr=".+" alt=".+" /></a>
а что / и /si или # # не ставляться начале и в конце ?
FireFenix
04.06.2009, 21:01
img
"<img[\s]*src[\s]*=[\s]*([^>]*)"
href
"<[\s]*a[\s]*href[\s]*=[\s]*([^>]*)>([^<]*)<[\s]*/[\s]*a[\s]*>"
Писал по памяти, мог ошибится
Долго вспомниал, уже ответили :(
FireFenix
04.06.2009, 21:07
а что / и /si или # # не ставляться начале и в конце ?
// - граница регулярного выражения
si - модификаторы
s - метасимвол "точка" в шаблоне соответствует всем символам, включая перевод строк
i - символы в шаблоне соответствуют символам как верхнего, так и нижнего регистра
парни, вы меня выручили, спасибо огромное, я заюзал вариант mailbrush потому-что у него самый подходящий
-Hormold-
04.06.2009, 21:16
Delphi.
Багнутый модуль RegExpr...
Суть бага:
Есть регулярка:
<ucode>(.*)</ucode>
Сам текст:
xml
хрень
<ucode>123</ucode>
хрень2
ещё-что-то...
<ucode>234</ucode>
ляляля
В результате мы получаем вот так:
123</ucode>
хрень2
ещё-что-то...
<ucode>234
Может найдётся верная регулярка для "<td align="left">1</td>" и удастся обойти баг!
Спасибо!
-Hormold-
<ucode>(.*?)</ucode>
?
FireFenix
04.06.2009, 21:25
Используй preg_match_all (php) или мод для проверки всех вхождений
Т.к. используется проверка для одного вхождения, скрипт выбирает самые крайние параметры шаблона
-Hormold-
04.06.2009, 21:28
Эмм... Я же написал - у меня Delphi
krypt3r! Спасибо... Что-то я не вспомнил...
точка жадничает, надо ей лекарство от жадности в виде ? вручить =)
FireFenix
04.06.2009, 21:33
Эмм... Я же написал - у меня Delphi
Ну это вообще-то раздел WEB, но даже если юзаешь Делфи, используй мод либо для выборки всех значений, либо для выборки первого вхождения
mailbrush
04.06.2009, 22:57
-Hormold-, я создавал эту тему, и ТЫ САМ на этот вопрос отвечал.
http://forum.antichat.ru/thread119447.html
вот
<tr class="te70"><td>Любой текст</td><td>Это надо узнать</td></tr>
мне надо чтобы там где любой текст было например (.*) а там где надо узнать мне надо ети строчки потом вывести. какая регулярка тут нужна?
FireFenix
05.06.2009, 12:18
"<tr[^>]*<td[^>]*.*<\/td><td>(.*)<\/td><\/tr>"
вроде так
сделайте чтобы так было
<tr class="te70"><td>Manufacturer, model (модель телефона)</td><td>ТУТ ТЕКСТкакойй надо достать</td></tr>
Red_Red1
05.06.2009, 12:48
<tr class="te70"><td>(.*)<\/td><td>(.*)<\/td>
Первый карман - "Любой текст"
Второй - "Это надо узнать"
Вообще достаточно <td>(.*?)<\/td> но тут важно парсить только строчки указаного вида (т.е. только <tr class="te70"><td>Любой текст</td><td>Это надо узнать</td></tr>) Причем "Любой текст" не совсем верно думаю, потому как если в тексте будут </td> то эта регулярка не сработает. И разбор чуть не такой при использовании короткой регулярой.
FireFenix
05.06.2009, 13:05
<?php
$str = '<tr class="te70"><td>Любой текст</td><td>Это надо узнать</td></tr>';
$regexp = '/<tr[^>]*><td[^>]*>.*<\/td><td[^>]*>(.*)<\/td><\/tr>/';
preg_match_all($regexp, $str, $match);
print_r($match);
?>
Вот устойчивая регулярка выведет в $match[1] нужную "Это нада узнать"
чёт у меня башка ваще не варит =\\
есть строка
<input type="hidden" name="inviter" value=""><input type="hidden" name="token" value="67f21d69aa231" />
есть регулярка
<input.*?value="(.*?)".*?name="(.+?)".*?>#is
в результате он находит
[1] => Array
(
[0] =>
)
[2] => Array
(
[0] => token
)
Не могу понять где я ошибся .... почему он НАХОДИТ чтото ... по идеи не должно же =\\
mailbrush
05.06.2009, 22:34
name="(.+?)"
Вот.. Тут находит.
FireFenix
05.06.2009, 22:35
Порядок следования value и name в регулярном выражении не соответствует тексту
<?php
$string = '<input type="hidden" name="inviter" value=""><input type="hidden" name="token" value="67f21d69aa231" />';
$regexp = '/<input.*?name="(.+?)".*?value="(.*?)".*?>/is';
preg_match_all($regexp, $string, $match);
print_r($match);
?>
Выдаст
Array
(
[0] => Array
(
[0] => <input type="hidden" name="inviter" value="">
[1] => <input type="hidden" name="token" value="67f21d69aa231" />
)
[1] => Array
(
[0] => inviter
[1] => token
)
[2] => Array
(
[0] =>
[1] => 67f21d69aa231
)
)
FireFenix млять ты читал что я написал ? прочти 10 раз ... я написал что НЕ ДОЛЖНО НАХОДИТЬ ...
mailbrush а это тут причём .. порядок следования не соответствует ... так что это тут не причём ..
FireFenix
05.06.2009, 22:45
FireFenix млять ты читал что я написал ? прочти 10 раз ... я написал что НЕ ДОЛЖНО НАХОДИТЬ ...
Упс..... наверное оно считывает 2 тега как 1 большой тег с кучей левого текста.
Можно край тега ограничить [^>]*> и всё будет намана
я поставил ограничение жадности "?" тоесть еси он доходит до первого > он останавливается
FireFenix
05.06.2009, 22:52
я поставил ограничение жадности "?" тоесть еси он доходит до первого > он останавливается
Квантификатор жадности срабатывает на первое вхождение....
Вхождение будет
<input type="hidden" name="inviter" value=""><input type="hidden" name="token" value="67f21d69aa231" />
если ограничить конструкцией [^>]*, то оно будет считывать до первой попавшейся скобочки ">"
смотрите мне надо чтобы парсер проверял типо так
<a href="любой текст" любой текст(типо alt="" title="")>Любой текст</a>
или
<a href="любой текст" любой текст(типо alt="" title="")><img src="любой текст" height="33" width="88" любой текст></a>
Эта регулярка роботает как-то не так:
#(<a href=".*" alt=".*">.*</a>)|<a href=".*" alt=".*"><img scr=".*" alt=".*" \/></a>#
FireFenix
06.06.2009, 21:45
смотрите мне надо чтобы парсер проверял типо так
<a href="любой текст" любой текст(типо alt="" title="")>Любой текст</a>
или
<a href="любой текст" любой текст(типо alt="" title="")><img src="любой текст" height="33" width="88" любой текст></a>
Проверял? зачем? Может что-то нужно достать? или тебе именно нужно проверять?
у меня скрипт какой контролирует баннерные места и надо чтобы он проверял что юзер ввел на место там где должен быть баннер (форма с полем код)
Нужно проверять
FireFenix
06.06.2009, 21:57
у меня скрипт какой контролирует баннерные места и надо чтобы он проверял что юзер ввел на место там где должен быть баннер (форма с полем код)
Нужно проверять
<?php
$string = '<a href="любой текст" alt="111" title="222">Любой текст</a>';
$regexp = '/<a href="([^"]*)"[^>]*>.*<\/a>/is';
preg_match_all($regexp, $string, $match);
if (strlen($match[1][0]) > 0)
{
echo('Правильно "' . $match[1][0] . '"<br>');
}
echo('<hr>');
unset($match);
$string = '<a href="любой текст" любой текст(типо alt="" title="")><img src="любой текст картинки" height="33" width="88" любой текст></a>';
$regexp = '/<a href="[^"]*"[^>]*><img src="([^"]*)"[^>]*><\/a>/is';
preg_match_all($regexp, $string, $match);
if (strlen($match[1][0]) > 0)
{
echo('Правильно "' . $match[1][0] . '"<br>');
}
?>
Вот мини код, который проверяет шаблон <a> и <a> + <img> и при наличии ссылок - говорит, что всё хорошо :)
я делал так но постоянно пишет что ошибка
$regexp = '/<a href="([^"]*)"[^>]*>.*<\/a>/is';
if(!preg_match($regexp, $_POST['code'])) {
die("Вы не правильно ввели код баннера или ссылки");
}
$regexp = '/<a href="[^"]*"[^>]*><img src="([^"]*)"[^>]*><\/a>/is';
if(!preg_match($regexp, $_POST['code'])) {
die("Вы не правильно ввели код баннера или ссылки");
}
FireFenix
06.06.2009, 22:12
я делал так но постоянно пишет что ошибка
Пример вставляемой строки из $_POST в студию
<?php
$string = '<a href="любой текст">Любой текст</a>';
//$string = '<a href="любой текст" любой текст(типо alt="" title="")><img src="любой текст картинки" height="33" width="88" любой текст></a>';
$regexp = '/(<a href="([^"]*)"[^>]*>.*<\/a>|<a href="[^"]*"[^>]*><img src="([^"]*)"[^>]*><\/a>)/is';
if(!preg_match($regexp, $string))
{
die("Вы не правильно ввели код баннера или ссылки");
} else {
die("Правильно");
}
?>
Всё прекрасно работает
<a href="http://site.ru" alt="site">fh</a>
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot