PDA

Просмотр полной версии : [Регулярки & Mod_Rewrite] Задай вопрос, получи ответ.


Страницы : 1 [2] 3 4 5

OnArs
19.02.2009, 15:39
Как сделать так чтобы при запросе файла index.html сервер передавал мне файл index.php.

На данный момент Я реализовал это вот так:
RewriteRule ^index.html$ index.php

Но это безумно неудобно, т.к. для каждого файла придётся отдельно прописывать строку. Как сделать так чтобы аналогичное правило работало для всех файлов на сервере?

Большое Спасибо!

m0Hze
19.02.2009, 16:57
RewriteRule ^(.*?).html$ $1.php

#Wolf#
22.02.2009, 12:32
Подскажите как фильтровать входящие данные - разрешены только буквы и цифры
и второй вариант - разрешены все символы кроме < > ?

[dei]
22.02.2009, 15:26
#Wolf#

1. if(preg_match('/^[\w\d]+$/',$var)) echo 'good';

2. if(preg_match('/^[^<>?]+$/',$var2)) echo 'good';

OnArs
24.02.2009, 23:59
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]/

Заранее благодарен! :)

OnArs
25.02.2009, 13:59
Ну что? С этим никто не может помочь? :(

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

m0Hze
26.02.2009, 20:05
^data/(.*)$ /docs/_private/$1

BlackSun
26.02.2009, 20:12
Не пашет =\
----
Пойду спать, завтра на свежую голову подумаю ..

Gifts
26.02.2009, 20:19
BlackSun RewriteCond %{REQUEST_URI} ^/data
RewriteRule ^data/(.+) /docs/_private/$1 [L]

m0Hze
26.02.2009, 23:46
Имею: $str = '<a>I<b> love</lo> you </dd>';
Необходимо убрать все теги.Теги мооугт быть разными,как в примере.
Чтото с прег-реплесом мучился,неполучаеться,я думал у всех прег_ синтаксес одинаковый,а это чтото неработает(

m0Hze
26.02.2009, 23:58
Уже не актуально:

preg_replace('/<(.*?)>/','',$str);

NOmeR1
27.02.2009, 01:27
Можно проще: strip_tags($str)

blaga
28.02.2009, 18:13
Запарился с регуляркой...
Есть страница, парситься в 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);
?>

blaga
28.02.2009, 19:58
Спасиб, тока вот косяк их много а суеться только один... Кто нить толкнет на мысль как их все взять?
по строкам искать нельзя вроде как, они ведь много строчные...
туплю немного, болею счас...:(

AkyHa_MaTaTa
28.02.2009, 20:05
Спасиб, тока вот косяк их много а суеться только один... Кто нить толкнет на мысль как их все взять?
по строкам искать нельзя вроде как, они ведь много строчные...
туплю немного, болею счас...:(
preg_match_all

blaga
03.03.2009, 17:39
ппц. ненавижу эти регулярки уже. вроде все просто.

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>');


а у тебя там просто путаница с кавычками, в последнем параметре, двойные в двойных

blaga
03.03.2009, 18:42
это я когда в форум вставлял напутал, вообще то там переменная
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 и путаница с кавычками (как сказано выше)

blaga
03.03.2009, 19:30
Нужно не просто вытащить а в тексте заменить.
бла бла бла
<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, твоя регулярка тоже не цепляет... :(

Gifts
03.03.2009, 20:03
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:. К слову, переменная - НЕ может начинаться на цифру

blaga
03.03.2009, 20:15
я щас об стенку убьюсь. ни одна регулярка не схватывает... :(
короч вот он чертов быдло код.

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);

И всё будет работать)

rushter
03.03.2009, 20:47
я щас об стенку убьюсь. ни одна регулярка не схватывает... :(
короч вот он чертов быдло код.

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 - минимизировать числитель, то есть искать как можно меньше совпадений

Gifts
03.03.2009, 21:11
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

blaga
04.03.2009, 06:18
.:EnoT:., спасиб, работает как нужно. :)
Gifts, мне не нужно все эти теги удалять, только некоторые.

Велемир
05.03.2009, 01:58
Есть строки вида: <link rel="shortcut icon" href="/sat/favicon.ico" type="image/x-icon"/>

Как замутить так, чтобы выдирались только значения определённых атрибутов,к примеру,атрибута rel.

preg_match("/<link rel=(.*)/",$out,$matches) Не работает и выдирает всю строку,а тег идёт как <link rel =что-то тут />

Как раз /> и не удаётся впаять...пишет,что,мол,неизв естный модификатор.Само собой,разумеется...Пробовал по-всякому,но выходило одно и тоже.

[dei]
05.03.2009, 02:26
/<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>

Велемир
05.03.2009, 20:14
<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*
Ну и тут тоже самое, задаешь маску и смотришь потом, правильно задал или нет.

Велемир
05.03.2009, 23:21
Я пока другую читал,но твою обязательно прочитаю:).Теперь вопрос по-другой регги:

/^[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}$/

Велемир
05.03.2009, 23:36
Нэнэнэ...он же сохранит полностью 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

Велемир
05.03.2009, 23:47
Опля,сработало ж )))Вот ток непонятно,почему не надо указывать ^ и $.Считывается то вся строка...Ты указал модификатор /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 запрешены такие имена в мыльнике, да и везде так.

Велемир
06.03.2009, 00:00
Рулишь:))Но с \w пишут,что не катит с символами типа _,а только с диапазонами a-zA-Z,но из-за локали(я так понял - это локалхост),зависит многое...

PaCo
06.03.2009, 00:07
\w - Любой символ, образующий "слово" это и кавычки и все на свете, я думаю на mail.ru запрешены такие имена в мыльнике, да и везде так.
"word" символ - это произвольная цифра, буква или символ подчеркивания, проще говоря, любой символ, который может являться частью 'слова' в Perl.

Но если локаль позволяет то будут и другие символы, отличные от инглиша

Chaak
06.03.2009, 00:11
Я пока другую читал,но твою обязательно прочитаю:).Теперь вопрос по-другой регги:

/^[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 - модификатор неучета регистра

Велемир
06.03.2009, 00:52
Почему () не особо нужно ? Как же тогда резалтить в фаил или ещё куда ?Поясни-ка:(

PaCo
06.03.2009, 01:02
#^([a-z0-9\_\.\-]+)\@mail\.ru$#i

Сегодня день пьяного гуру? Если не сложно чак обьясни мне зачем слешировать @ и _, грубо говоря вот такое регулярное выражения будет работать с preg_match -#([^_\.\-][0-9a-z_\-\.]{1,16})@mail\.ru#i без лишних телодвижений ,


() - выделение в подвыражение, оно собственно тут не особо нужно

А как ты собрался выташить имя без подмаски?

З.Ы. 2Велемир не кидайся умными слова пытаесь скрыть свои непонимание чего то.

DTW
07.03.2009, 14:24
Например есть



$text = '<div><b>Что тут написано</b></div>';

$rep ='<u>';

$sablon = '/<br>/is';

$rezult = preg_replace($sablon,$rep,$text);

echo $rezult;


чтоб было так



$text = '<div><u>Что тут написано</u></div>';



как это сделать одной фунцией ...

PaCo
07.03.2009, 14:48
Имхо здеся не нужна регулярка:

<?php
$text = '<div><b>Что тут написано</b></div>';
$rezult = strtr($text,array('<b>'=>'<u>','</b>'=>'</u>'));
echo $rezult;
?>

Велемир
07.03.2009, 21:46
Эм...так задумано ?



$x = 'fuckinstrin';

if(preg_match('#[s]....#',$x,$matches)) {

print_r($matches);

}



Сначала проверяется каждый символ по куску шаблона [s].Совпал один символ.Затем идут точки,которые соответствуют любому символу.Так почему проверка начинается не с начала,а с того места,где произошло первое совпадение ? Шаблон сработал правильно,но почему-то не так,как я ожидал))(Ожидалось sfuck)

PaCo
07.03.2009, 22:21
Эм...так задумано ?



$x = 'fuckinstrin';

if(preg_match('#[s]....#',$x,$matches)) {

print_r($matches);

}



Сначала проверяется каждый символ по куску шаблона [s].Совпал один символ.Затем идут точки,которые соответствуют любому символу.Так почему проверка начинается не с начала,а с того места,где произошло первое совпадение ? Шаблон сработал правильно,но почему-то не так,как я ожидал))(Ожидалось sfuck)
Ну во первых [] - во сновном самое логичное применять для символьго класса, у тебя 1 символ,
во вторых если ..... - жесть, {4} то есть так

#s.{4}#

, ну и в третих у тебя никак не будет sfuck потому как у тебя я не наблюдаю ПЕРЕД fuckinstrin s , у тебя будет strin, регулярное выражения будет обрабатываться с начало, слева на право без возратов назад.

Велемир
07.03.2009, 22:31
, регулярное выражения будет обрабатываться с начало, слева на право без возратов назад.

Это всё,что я хотел узнать :))).Что касается ....,то это было для примера.Конечно же,целесообразнее использовать .{4},но ведь ....=.{4},не так ли ? Также,как и [символ] = символ.По крайней мере,я отличий не наблюдал.

ЗЫ: Диву даюсь,что так быстро получил ответ на вопрос :):).Лови плюсики)))

m0Hze
08.03.2009, 00:17
А теперь я :)
Хотя я заранее знаю ответ на свой вопрос.
имеем например;

$new = preg_replace('#old(.*)#','new(тут то что было в (.*)',$str)';

нереал?

Gifts
08.03.2009, 00:26
m0Hze $new=preg_replace('~old(.*)~','new$1',$str);

Fak1r
08.03.2009, 21:21
Есть такой 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 кода несколько, то вытаскивается только последнее совпадение с регуляркой.

m0Hze
08.03.2009, 23:37
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
)

#Wolf#
11.03.2009, 07:15
подскажите как отсеять все символы кроме :
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) Правь пути к стилям, картинкам и т.д. Браузер то твой считает что это папка и соответственно оттуда и пытается загрузить. Чтоб не париться указывай полные пути.

Frize
13.03.2009, 16:21
Помогите вытащить текс
<div class="h1"><h1>ТЕКСТ</h1></div>
<p><em>ТЕКСТТЕКСТТЕКСТТЕКСТ
ТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТ ТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТ ТЕКСТТЕКСТ
ТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТ ТЕКСТТЕКСТТЕКСТ.<br />
</p>

<div class="links">

попробовал так

preg_match_all('|<div class="h1"><h1>(.*)<div class="links">|U);

В регулярках разбираюсь плохо, но хочется все-таки понять в чем дело. =)

m0Hze
13.03.2009, 16:51
preg_match('|<p><em>(.*)<br|')

Frize
13.03.2009, 17:00
не, мне надо имено с этих тегов: <div class="h1"><h1> <div class="links">

m0Hze
13.03.2009, 17:19
ну замени теги,что тупиш то?

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);
?>

OnArs
15.03.2009, 15:10
Всем привет, подскажите пожалуйста:

Сейчас у меня в скрипте вот такие url'ы:
lmap.php?act=free&id=27

Хочется сделать ЧПУ, вот так:
site.ru/free-7.html

Как правильно будет выглядеть строка в .htaccess?

Большое Спасибо! :)

Gifts
15.03.2009, 15:17
RewriteRule ^/?([^-]+)-([^\.]+)\.html?$ lmap.php?act=$1&id=$2

bxN5
17.03.2009, 16:23
вообщем проблема в .htaccess
ErrorDocument 404 /index.php
но при ошибке получаю как и раньше 404 Not Found , доступа к серверу нету но апач вроде нормально настроен , какие еще варианты?

bxN5
17.03.2009, 17:55
поправочка , не редиректит ток 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

bxN5
17.03.2009, 20:09
таки верно AllowOverride в ноне был , но как подключили не редиректятся html , сейчас буду суппорт по поводу FileInfo долбать
спасибо

korp
18.03.2009, 19:16
Нужна регулярка выдирания даты с таких строк
<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];

?>

korp
18.03.2009, 19:50
Pashkela

Спасибо пашет, но надо именно регулярку.
Строчек много на странице таких.

Pashkela
18.03.2009, 19:51
preg_match_all('#>(.*)\|#',$in,$res);

print_r ($res);

PS: В первом варианте не регулярка? А что тогда? Хрен с маслом?

Надо много записей проверить - так и надо писать

korp
18.03.2009, 20:17
Опять я не правильно написал.
Меняеться только дата, а <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>

korp
18.03.2009, 22:10
Как я понял выдирать дату получиться токо таким способом, а чтоб дату выдерал Сегодня, 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=&quot;http://site.ru/user/Mikolas777/&quot;', 'href=&quot;http://site.ru/user/Mikolas777/news/&quot;','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="">

TheSoul
19.03.2009, 15:08
$text =~ /25.png" ALT="">(.*?)\|/

mailbrush
19.03.2009, 20:03
Не знаю тут ли пишу, но как сделать в хтакцессе замену определенной строки во всех файлах (замену только тогда, когда скрипт открывается (т.е. замену расскрытий путей))?

Gifts
20.03.2009, 08:42
mailbrush php_flag display_errors Off

mailbrush
20.03.2009, 17:06
спс, но ошибка все равно есть

Велемир
22.03.2009, 17:25
Люди,хелпните ))



$str = "mail@mail.ru:12345";

Домен может быть bk.ru,list.ru и т.д.(после @).Вот регулярка:

#([a-z0-9A-Z_\.])+@([mail.ru|bk.ru|list.ru])[:]{1}(.)(4,16)#

Задумка такая: Нужно сохранять в разные переменные логин,домен и пароль.Пароль может состоять из любых символов,имея длину от 4 до 16 символов(Допустим),но результаты не выводятся:(.Значит,регулярк о неверна?

Chaak
22.03.2009, 17:31
Люди,хелпните ))



$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}

() разделяет строку на части(в выходном масиве будет видно)

[dei]
23.03.2009, 01:52
Люди,хелпните ))



$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> в массив? Точнее какой символ обозначает перенос строки?

Chaak
23.03.2009, 13:13
preg_match('#<tag>(.+)</tag>#m', $page, $match);
$res = explode("\n", $match['1']);

[dei]
23.03.2009, 14:51
и все-таки
preg_match('#<tag>(.+)</tag>#ms', $page, $match);
$res = explode("\n", $match['1']);

PaCo
23.03.2009, 15:04
']и все-таки
и все таки таки достаточно:
'#<tag>(.+)</tag>#s'

art2222
23.03.2009, 15:07
Точнее какой символ обозначает перенос строки?
Этот: \n
Если ты его используешь в строке, то только в строке обрамленной двойными кавычками.

Велемир
23.03.2009, 15:28
']/^(.*?)@((?: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=.*>|

PaCo
24.03.2009, 23:07
Нужно вытащить:

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
Зачем в шаблон вносить данные которые совсем не нужны? (Хотя конечно зависит от конкретного случая, но всё же)

Zitt
25.03.2009, 00:00
есть записаь типа

<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]);

#Wolf#
29.03.2009, 06:39
вот имеется регулярка для замены кликабельных ссылок
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/)
с меня как обычно много +сов

Gifts
29.03.2009, 22:27
#Wolf#
По первому - как вариант:<a.*href="([^"]+)".*>.{3,}</a> т.е. если между тэгами "a" меньше 3 символов, то не заменять


Насчет ноиндекс - уже отвечали вроде: https://forum.antichat.ru/showpost.php?p=1057786&postcount=7837

#Wolf#
30.03.2009, 13:13
#Wolf#
По первому - как вариант:<a.*href="([^"]+)".*>.{3,}</a> т.е. если между тэгами "a" меньше 3 символов, то не заменять


что то ничего не изменилось... как резало так и режет... :confused:

Насчет ноиндекс - уже отвечали вроде: https://forum.antichat.ru/showpost.php?p=1057786&postcount=7837
ох..совсем запямятовал что уже спрашивал :) ;)

[dei]
30.03.2009, 14:42
#Wolf#
#<a.*href="([^"]+)".*>[^<]+</a>#Usi

#Wolf#
30.03.2009, 14:56
']#Wolf#
#<a.*href="([^"]+)".*>[^<]+</a>#Usi
вобще вырезало все от первой картинки(с highslide) до последней ссылки
от <a и до самого последнего </a>

[dei]
30.03.2009, 15:10
а что нужно?

#Wolf#
30.03.2009, 15:14
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/

Gifts
30.03.2009, 19:52
#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);

Zitt
31.03.2009, 09:30
как из этого

<a id="ct_gv_ct_NAME" href="Default.aspx?action=go&amp;PGIndex%3d0%26WPGOrderBy%3d">link_name</a>

выдрать саму ссылку?? в тексте встречается много раз....

Vid0k
31.03.2009, 09:44
как из этого

выдрать саму ссылку?? в тексте встречается много раз....

/<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&amp;PGIndex%3d0%26WPGOrderBy%3d ">link_name</a>';
preg_match_all('|a id=.*href="(.*)">.*</a>|Ui',$in,$rez);
print_r($rez);
?>

Zitt
31.03.2009, 12:20
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][...] загляни

Zitt
31.03.2009, 12:33
ога точна )

SVAROG
01.04.2009, 15:12
вот часть текста
<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\>
но ошибка вылазит

Chaak
01.04.2009, 16:58
.jpg , точки экранируй

.: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;
?>

m0Hze
05.04.2009, 14:13
<?
$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);

Помоему както так,проще.

OnArs
06.04.2009, 10:59
Как в robots.txt запретить URL'ы вида:
Neki-tekst-v-urle-m9.html

т.е. где есть
-m[число].html

Заранее благодарен!

Pashkela
06.04.2009, 12:00
http://robotstxt.org.ru/

OnArs
06.04.2009, 14:43
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=

OnArs
06.04.2009, 16:40
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$

только как ты собрался это проверять - непонятно

OnArs
06.04.2009, 18:14
ну попробуй так:

Disallow: Neki-tekst-v-urle-m[\d{2}]\.html$

только как ты собрался это проверять - непонятно

Google WebMaster Tools -> Analyze robots.txt

Ниодин из примеров не работает, но всё равно всем спасибо! :rolleyes:

geforse
06.04.2009, 18:36
Помогите выдрать ссесию из страницы:

тоесть есть страница с хедером: ( ... 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];
?>

DTW
07.04.2009, 01:43
$pat = '|<td class="contentheading">(.*?)<\/td>|is';

$html='<table class="contentpaneopen">
<tbody><tr>
<td valign="top">
<span class="small">
Written by Author </span>

&nbsp;&nbsp;
</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>&nbsp;</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>

&nbsp;&nbsp;
</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>&nbsp;</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] => &nbsp;
[4] => It easy grab link from other site
)







З.Ы. Пробелы не забудь убрать из регулярки

Дикс
14.04.2009, 13:54
RewriteRule ^mess/(\d+) /index.php?display=mess&type=$1 [QSA]
как добавить в регулярку запятые?

сейчас она парсит такое:
server.ru/mess/10
а надо:
server.ru/mess/10,12,14

Byrger
14.04.2009, 13:56
Как заставить MOD REWRITE работать с кирилицей?
RewriteRule ^работа index.php?module=works
Не воспринимает....
И так тоже
RewriteRule ^%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0 index.php?module=works

Дикс
14.04.2009, 13:57
а, всё
RewriteRule ^reg/errors/([\w\d\,]+) /index.php?display=reg&errors=$1 [QSA]
спасибо

Дикс
14.04.2009, 13:58
Byrger
сохрани файл в utf-8 (without BOM - если есть такая опция)

Byrger
14.04.2009, 14:19
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ой случай

А с какого перепугу тут русскими буквами написано вообще?

Ru}{eeZ
15.04.2009, 15:35
Поступает текст с переходом на новую строку из текстарии (\n), но не знаю как правильно это оформить, пишу:
|^[\s.]{3,300}$|i
Подскажите в чём ошибка

Pashkela
15.04.2009, 15:42
Задачу конкретизируй, что выцепить-то надо из текстарии? если есть "\n", то юзай модификтор "s"

Ru}{eeZ
15.04.2009, 15:49
Выцепить ничего не надо, это банальная проверка "удовлетворяет ли количество символов в переменной заданному интервалу"

Pashkela
15.04.2009, 15:51
strlen($str)

не?

Дикс
15.04.2009, 16:00
есть валидатор строки на яваскрипте

(/[0-9a-z\_\-]/i).test(name)


но вот беда - пропускает как минимум "!"
мне надо чтобы имя содержало только латинские символы, цифры, _, и тире

помогите пажалусто

Ru}{eeZ
15.04.2009, 16:04
strlen($str)

не?

блин, представь добавление комментария, если комментарий не короче трёх и не длиннее трёхсот, то вернётся тру, если тру - произвести запись, если фол - выдать ошибку
$pregUC = preg_match('|[\s.]{3,300}|i',$_POST['userComment']);

m0Hze
15.04.2009, 16:11
оО
Бери просто,коментарий в скобки вида: "Коментарий";
Это - массив с буквами.
Далее можно просто 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]+$/

Vid0k
16.04.2009, 00:37
нужна регулярка

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

нужно выделить отдельно домен и страница если есть

Vid0k
16.04.2009, 00:43
типо
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 />");
}
?>

Vid0k
16.04.2009, 01:29
спасибо я уже сделал
регулярка

"^(.*?)(\/(.*))?$"


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://"
может кому пригодится

Ru}{eeZ
16.04.2009, 07:26
http://www.php.net/manual/ru/function.parse-url.php

Zircool
18.04.2009, 21:39
Здравствуйте..Как сделать редирект..Есть ссылка

http://100mbps.ru/?pid=111&bid=3

Необходимо что бы при переходе на данную ссылку пользователь перенаправлялся на страницу

http://billing.100mbps.ru/?pid=111&bid=3&type=banner&redirect=1

Переменные pid и bid динамичны и меняют све значение...

#Wolf#
19.04.2009, 15:20
редирект с host.ru на host.net
нужно сделать чтобы при переходе по ссылке вида http://host.ru/blablabla
(неважно что в урле после host.ru хоть host.ru/index.php )
чтобы редиректило всегда на host.net
ах да... permanent (301 — документ перемещен постоянно)

Gifts
19.04.2009, 19:29
#Wolf# Как то так
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?host\.ru [NC]
RewriteRule ^.*$ http://host.net/ [L,R=301]

art2222
20.04.2009, 15:40
Как проверить является ли строка IP адресом.
Т.е. например 127.0.0.1 верно, а 266.0.0.1 неверно?

m0Hze
20.04.2009, 15:53
Мне кажеься,что,бить на части по точкам,и проверять < 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';
?>

VDShark
20.04.2009, 18:03
А ip2long кто отменил? False в случае невалидности.

PaCo
20.04.2009, 22:50
А 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>

PaCo
24.04.2009, 17:06
Доброго времени суток, у меня маленький вопрос, допустим есть такой 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

Gifts
24.04.2009, 17:23
Никакой, если в скрипте нужно просто такие строки выводить

<?
$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>');

?>

PaCo
24.04.2009, 20:20
Ну примерно так я и делал, но мне это не понравилось вот и хотел как вытянуть регуляркой(че то потерн не выходит), да в 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);

m0Hze
28.04.2009, 19:58
Чтото я голову поломал,но тут пооже ключи нужны какието прописывать, а я вот кроме 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>", что вообще-то более правильно и действительно универсальнее

Т.е. принцип составления ЛЮБОГО регулярного выражения простой - должно быть НАЧАЛО и должен быть КОНЕЦ, как это не странно. Если спошлняковый текст (не имена файлов и т.д., если проводить аналогию с поиском, там ОГРАНИЧЕННЫЙ текст. А тут - сплошняк сплошной.

ЗЫЖ: Вроде бы:) Если не прав - думаю поправят

m0Hze
28.04.2009, 22:57
Думаю универсальной на все случаи жизни в данном случае не придумать, обязательно должно быть какое-то ограничение справа, либо расширение нужное, либо слеш, либо ">" и 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, просто расширенно

Gifts
29.04.2009, 00:13
preg_match_all('~https?://\S+~i',$in,$out); В урле не должно быть пробельных символов.

Дикс
30.04.2009, 10:44
delete

Alekzzzander
30.04.2009, 16:35
у меня вопрос, как из форума выдрать кол-во репы, дату реги, кол-во сообщений, ник
форум на вобле, (в принципе пример ачата думаю поможет) и желательно с разъяснением если сможет кто

m0Hze
30.04.2009, 17:01
Ты выкинь кусок кода,где расположено то что тебе нужно сюда.
Тогда помогем

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>

m0Hze
30.04.2009, 17:29
<?
$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.

m0Hze
30.04.2009, 18:09
ну если я захочу сделать для каждого человека свое этот вариант же не прокатит, именно поэтому и написал сюда :) мне надо что бы из всей страницы я мог ввести 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

OnArs
07.05.2009, 12:21
Кто-нибудь может помоч с составлением универсальной регулярки?

Вот что мне нужно:
Получить тело ссылки: <a href="URL" rel="">Anchor</a>
Нужно вытянуть :

URL
Anchor
dofollow ссылка или нет


Буду рад любым ответам, возможно кто-то встречал готовое решение...

Gifts
07.05.2009, 17:30
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
07.05.2009, 19:50
подскажите регулярку для выдирания мыл

Gifts
07.05.2009, 20:14
Sharky \w+@\w+\.\w{2,5}

PaCo
08.05.2009, 06:30
Sharky \w+@\w+\.\w{2,5}

preg_match('#\w+@\w+\.\w{2,5}#','я_типо_мы о@а_типо_доменю.ююю',$match);
print_r($match);

на русской локале:
Array ( [0] => я_типо_мыло@а_типо_доменю.юю ю )

iv.
13.05.2009, 09:43
подскажите регулярку для ссылок выдачи яндекса
мои изыскания закончились на этом:
;" href="(.*?)" target="_blank">
делаю на питоне, поэтому код думаю будет не в кассу
пасибки!

laedafess
13.05.2009, 09:56
#;" href="(.+?)" target#

iv.
13.05.2009, 10:28
2laedafess:
ок, я пошел дальше и получил
;" href="(.+?)" t
насколько это будет обоснованно?

Gifts
13.05.2009, 11:01
iv. Какая цель стоит? Извратиться и сделать покороче? А смысл, быстрее работать не будет (10^-8 секунды разницы - не в счет)

iv.
13.05.2009, 11:04
ок я понял =)

Ru}{eeZ
14.05.2009, 22:35
|^([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
16.05.2009, 19:39
Включил МодРеврайт и не подгружаются картинки и скрипты.
Как быть? Только не надо говорить что прописывать полный путь

Gifts
16.05.2009, 20:15
Byrger Экстрасенсы в отпуске. Где файл htaccess и в какой он кодировке?

Byrger
16.05.2009, 22:40
Byrger Экстрасенсы в отпуске. Где файл htaccess и в какой он кодировке?
Он почемуто вообще похоже не работает...
VertigoServ стоит....
А фаил в UTF 8 BOM

Gifts
16.05.2009, 22:48
Byrger БОМ - портит данные, сохраните в ANSI лучше, и содержимого .htaccess вы не выложили

Byrger
16.05.2009, 23:07
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 Он такое не воспринимает...

Велемир
19.05.2009, 19:57
Пиплы! Захотелось вот написать парсер ящиков от 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);

}





?>



Это далеко не готовый скрипт,а лишь наработка.Проблема состоит именно в том,какая регулярка нужна для выдирания Входящих писем.Там куча символов...пробовал,ничего не возвращает.Может,дабы не мучиться,скажете,есть ли такие программы в свободном обиходе?)(Парсинг определённых заголовков писем и его содержимым).

krypt3r
20.05.2009, 08:23
Эм-м, а ключевое слово "Входящие" и число напротив не подходят?

Велемир
20.05.2009, 18:14
Нет,не работает:(.Пробовал

Pashkela
20.05.2009, 20:24
Всего писем (адрес страницы сам знаешь, там где написано "Входящие"):


<?php
$in='title="Входящие">Новых&nbsp;писем:&nbsp;<b>8</b></a>';
preg_match('|title="Входящие">Новых&nbsp;писем:&nbsp;<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]);
?>

Ru}{eeZ
21.05.2009, 21:03
как регулярке указать промежуток от нуля до 255? чего-то я забыл

preg_match('|^[0-255]{1,3}$|',$_POST['ipPart3'])

Gifts
21.05.2009, 21:27
Ru}{eeZ Никак.

if (is_numeric($_POST['ipPart3']) && intval($_POST['ipPart3'])>0 && intval($_POST['ipPart3'])<255)

Велемир
22.05.2009, 19:59
Эээ,Паш,не знаю,где ты нашёл там это:),но я этого не видел.Зато смог сам разобраться не без твоей помощи:).:



<?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>&nbsp;(.*)|',$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);


}

?>



Запара теперь с циклом прогона страниц.По идее,всё правильно.Сначала выводит ссылки на сообщения и сами темы,потом делает запрос на следующую страницу,потом всё сначала,а выходит,что он выводит только Входящие сообщения и отрубается.Ещё проблема состоит в том,как посчитать количество сообщений(Входящих),и одновременно убрать переменную из цикла...А то скрипт при переходе на каждую страницу будет пытаться считать количество входящих сообщений заного,что не есть хорошо.У кого какие идеи ?

ЗЫ: Для тестов я брал другое мыло.

iv.
01.06.2009, 08:48
подскажите регулярку для выделения домена из ссылок.

т.е. дано:
domain.com
www.domain.com
qwe.domain.com
qwe.rty.domain.com
...
qwe.rty.domain.com/index.html
...

надо чтобы по всем этим строкам выдавалось domain.com
дальше этого не думается:
([^/]*)
эта регулярка берет всё пока не встречает символ "/"
надо ещё избавится от поддоменов и оставить строки типа "domain.com", если они уже в таком виде
спасибо

пс: питон

Gifts
01.06.2009, 09:12
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)

iv.
01.06.2009, 10:20
Непонятно в каком виде исходный текст, если в каждой строчке по адресу - то будет так
Не совсем осознал как работает (\w+\.\w+)[\s/<>"\'] ну ладно. Исходный текст на самом деле в хтмл и ссылка находится в теге <cite>. Ну и так я собственно получаю url до слэша:
<cite>([^/]*)</cite>
Нужно получить домен 2 уровня из этого дела.

Gifts
01.06.2009, 19:34
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)


Все домены второго уровня без повторов

alwex
04.06.2009, 20:51
помогите мне сделать регулярку чтобы проверяла чтобы в тексте было или <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>#

alwex
04.06.2009, 20:55
спс =) ща проверю

iv.
04.06.2009, 20:56
помогите мне сделать регулярку чтобы проверяла чтобы в тексте было или <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>

alwex
04.06.2009, 21:00
а что / и /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 - символы в шаблоне соответствуют символам как верхнего, так и нижнего регистра

alwex
04.06.2009, 21:08
парни, вы меня выручили, спасибо огромное, я заюзал вариант 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>" и удастся обойти баг!
Спасибо!

krypt3r
04.06.2009, 21:22
-Hormold-

<ucode>(.*?)</ucode>

?

FireFenix
04.06.2009, 21:25
Используй preg_match_all (php) или мод для проверки всех вхождений
Т.к. используется проверка для одного вхождения, скрипт выбирает самые крайние параметры шаблона

-Hormold-
04.06.2009, 21:28
Эмм... Я же написал - у меня Delphi
krypt3r! Спасибо... Что-то я не вспомнил...

krypt3r
04.06.2009, 21:31
точка жадничает, надо ей лекарство от жадности в виде ? вручить =)

FireFenix
04.06.2009, 21:33
Эмм... Я же написал - у меня Delphi

Ну это вообще-то раздел WEB, но даже если юзаешь Делфи, используй мод либо для выборки всех значений, либо для выборки первого вхождения

mailbrush
04.06.2009, 22:57
-Hormold-, я создавал эту тему, и ТЫ САМ на этот вопрос отвечал.
http://forum.antichat.ru/thread119447.html

alwex
05.06.2009, 12:06
вот
<tr class="te70"><td>Любой текст</td><td>Это надо узнать</td></tr>
мне надо чтобы там где любой текст было например (.*) а там где надо узнать мне надо ети строчки потом вывести. какая регулярка тут нужна?

FireFenix
05.06.2009, 12:18
"<tr[^>]*<td[^>]*.*<\/td><td>(.*)<\/td><\/tr>"
вроде так

alwex
05.06.2009, 12:18
ща потестю...

alwex
05.06.2009, 12:37
не роботает

alwex
05.06.2009, 12:40
сделайте чтобы так было
<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] нужную "Это нада узнать"

alwex
05.06.2009, 13:13
спс. роботает

Doom123
05.06.2009, 22:24
чёт у меня башка ваще не варит =\\


есть строка

<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
)

)

Doom123
05.06.2009, 22:40
FireFenix млять ты читал что я написал ? прочти 10 раз ... я написал что НЕ ДОЛЖНО НАХОДИТЬ ...

mailbrush а это тут причём .. порядок следования не соответствует ... так что это тут не причём ..

FireFenix
05.06.2009, 22:45
FireFenix млять ты читал что я написал ? прочти 10 раз ... я написал что НЕ ДОЛЖНО НАХОДИТЬ ...
Упс..... наверное оно считывает 2 тега как 1 большой тег с кучей левого текста.
Можно край тега ограничить [^>]*> и всё будет намана

Doom123
05.06.2009, 22:48
я поставил ограничение жадности "?" тоесть еси он доходит до первого > он останавливается

FireFenix
05.06.2009, 22:52
я поставил ограничение жадности "?" тоесть еси он доходит до первого > он останавливается

Квантификатор жадности срабатывает на первое вхождение....
Вхождение будет
<input type="hidden" name="inviter" value=""><input type="hidden" name="token" value="67f21d69aa231" />
если ограничить конструкцией [^>]*, то оно будет считывать до первой попавшейся скобочки ">"

Doom123
05.06.2009, 22:58
FireFenix уху )) спс =)

alwex
06.06.2009, 21:43
смотрите мне надо чтобы парсер проверял типо так

<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>

Проверял? зачем? Может что-то нужно достать? или тебе именно нужно проверять?

alwex
06.06.2009, 21:46
у меня скрипт какой контролирует баннерные места и надо чтобы он проверял что юзер ввел на место там где должен быть баннер (форма с полем код)

Нужно проверять

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> и при наличии ссылок - говорит, что всё хорошо :)

alwex
06.06.2009, 22:03
ща протестю...

alwex
06.06.2009, 22:09
я делал так но постоянно пишет что ошибка

$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("Правильно");
}

?>


Всё прекрасно работает

alwex
06.06.2009, 22:15
<a href="http://site.ru" alt="site">fh</a>