PDA

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


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

FireFenix
06.06.2009, 22:17
<a href="http://site.ru" alt="site">fh</a>
Ну если у тебя так в твоём посте, то получается что если ввели первый неправильно, то второй не проверяется из-за die() :)
Постом выше я объединил 2 в 1, попробуй его

alwex
06.06.2009, 22:21
ща попробую echo вывести потому что реально не хочет

alwex
06.06.2009, 22:25
всеравно не правильно...

FireFenix
06.06.2009, 22:34
всеравно не правильно...
У меня всё работает....
Приведи кусочек кода обработки и какие ты входные данные используешь

alwex
06.06.2009, 22:36
смотри, есть форма POST и я нажимаю Сабмит и проверяю данные сначало, на empty() потом на strlen() и птом на регулярку и оно пишет Вы не правильно ввели код баннера или ссылки

alwex
06.06.2009, 22:46
попробуй у себя в ПОСТ форме сделать

FireFenix
06.06.2009, 22:51
попробуй у себя в ПОСТ форме сделать
Честно, я не знаю почему у тебя не работает. Вот вместе c HTML мой вариант - показывает результат 2х выборок.

<form id="form1" name="form1" method="post" action="?">
<input id="code" name="code" type="text" size="100" value='<a href="/home/1234njj757hjvd.jpg">Я ссылко</a>'>
<input name="Submit" type="submit" value="button">
</form>

<?php

//$string = '<a href="любой текст">Любой текст</a>';
//$string = '<a href="любой текст" любой текст(типо alt="" title="")><img 7890src="любой текст картинки" height="33" width="88" любой текст></a>';

if (strlen($_POST['code']) > 0 )
{
$regexp1 = '/<a href="[^"]*"[^>]*>.*<\/a>/is';
$regexp2 = '/<a href="[^"]*"[^>]*><img src="[^"]*"[^>]*><\/a>/is';

if(!preg_match($regexp1, $_POST['code']))
{
echo("1 : Вы не правильно ввели код баннера или ссылки");
} else {
echo("1 : Правильно");
}

echo('<br>');

if(!preg_match($regexp2, $_POST['code']))
{
echo("2 : Вы не правильно ввели код баннера или ссылки");
} else {
echo("2 : Правильно");
}
}

?>

Может у тебя предидущая проверка останавливает? или не с того контрола считываешь?

alwex
06.06.2009, 23:24
ну я розбирусь. спасибо за регулярку

alwex
07.06.2009, 11:28
смотри у меня есть форма и почему то когда я echo вывожу то выводит

<a href=\"/home/1234njj757hjvd.jpg\">Я ссылко</a> тоисть надо сделать парсер чтобы он поддерживал \"\"

erihtoney
07.06.2009, 12:02
я ссылко (http://ru.php.net/manual/ru/function.stripslashes.php)

alwex
07.06.2009, 12:04
блин я уже забыл, с утра не сображаю..

m0Hze
10.06.2009, 22:54
Чтото я совсем встрял не простом вопросе.
Собственно,имею мног текста,новость.Необходимо вывести первые 780 знаков,ну какбе краткая новость на главной.В новости есть все знаки ествевственно.Пытаюсь оторвать кусок так:
preg_match('|(.*){780}|',$row['body'],$match);
Но выводиться 346,я так понимаю он после перевода строки искать не хочет.ЧТото пробывал добавить
sim,Ui, непомогает =(
Кто посоветует что? И вообще,правильно ли я делаю,выводя так краткую новость? Может это рорганизовать по другому? Кто поможет?

FireFenix
10.06.2009, 23:00
preg_match('/^(.*){780}/ism',$row['body'],$match);

m0Hze
10.06.2009, 23:06
preg_match('/^(.*){780}/ism',$row['body'],$match);
Выводит всю новость :(

Pashkela
10.06.2009, 23:08
Было уже:


if (strlen($novost)<=780) echo $novost;
else echo substr($novost,0,780) . "...\n";

m0Hze
10.06.2009, 23:09
Возмонжно,можно это реалиовать с помощью MySQL? Прямо в запросе? И не мучаться регулярками?

krypt3r
10.06.2009, 23:12
/.{780}/

FireFenix
10.06.2009, 23:15
Тада, чё-то я не выспался (.*){780} - любой контент 780 раз. Впринципе и должно выдавать входящий текст :)
krypt3r правильно написал регулярку, используй её :)

mailbrush
10.06.2009, 23:25
krypt3r правильно написал регулярку, используй её
А как же модификатор s?

OnArs
11.06.2009, 23:01
Мужики! Всем привет!

Помогите разобраться... Есть сообщения вида:
URL запроса: http://www.google.com/search?&hl=en&ie=UTF-8&q=site:.org.jm+inurl:"addguest.htm"+intext:register+site&num=100
Error: Is not found of any document appropriate to inquiry
STATUS :Получено 0 URL.

Руглярка должна возвращать 2 куска:

inurl:"addguest.htm"+intext:register


0


Каждый по отдельности спарсить получает, а всё вместе нет :(

Большое спасибо за помощь!

FireFenix
11.06.2009, 23:21
<?php

$content = 'URL запроса: http://www.google.com/search?&hl=en&ie=UTF-8&q=site:.org.jm+inurl:"addguest.htm"+intext:register+site&num=100
Error: Is not found of any document appropriate to inquiry
STATUS :Получено 0 URL.';

preg_match('/inurl:"([^"]*)".*intext:([^\+|^\n]*).*STATUS :Получено (.+) URL/ism', $content, $match);

echo('inurl: ' . $match[1] . '<br>');
echo('intext: ' . $match[2] . '<br>');
echo('Получено: ' . $match[3] . ' URL');

?>


В $match[1] - параметры заданные в inurl
В $match[2] - параметры заданные в intext
В $match[3] - количество полученных url

DVD_RW
13.06.2009, 00:51
preg_match_all('#<div.*?>.*?)</div>#is' ", $content, $text));

Где ошибка? :(

mailbrush
13.06.2009, 00:55
",
А это что?

DVD_RW
13.06.2009, 01:02
А это что?
хз :)

preg_match_all('#<div.*?>.*?)</div>#is', $content, $text));
тоже не работает :(

.:EnoT:.
13.06.2009, 01:14
*?)
Зачем тут скобка?)
$text));
и тут тоже зачем?)

DVD_RW
13.06.2009, 01:19
Зачем тут скобка?)

и тут тоже зачем?)

preg_match_all('#<div.*?>.*?</div>#is', $content, $text);

Спасибо!
Не оставишь контакт ? нужно ещё дописать :)

alwex
13.06.2009, 14:59
помогите с ЧПУ:

1. есть ссылка вида:
index.php?do=music&act=mus&cat=othertext
и надо сделать:
music/othertext/
othertext - это любой текст

2. есть ссылка вида:
index.php?do=music&act=song&id=5
и надо сделать:
music/5/
5 - любая цифра

3. есть ссылка вида
/index.php?do=music&act=mus&cat=super&page=5
и надо сделать:
/music/super/page/5/

super - это любой текст
5 - любая цифра

всем кто поможет даю +

.:EnoT:.
13.06.2009, 16:00
1.
RewriteEngine On
RewriteBase /
RewriteRule ^music/([a-zA-Z0-9]+)/$ index.php?do=music&act=mus&cat=$1 [L]

2.
RewriteEngine On
RewriteBase /
RewriteRule ^music/([0-9]+)/$ index.php?do=music&act=song&id=$1 [L]

3.
RewriteEngine On
RewriteBase /
RewriteRule ^music/([a-zA-Z0-9]+)/page/([0-9]+)/$ index.php?do=music&act=mus&cat=$1&page=$2 [L]


Соответственно если в словах совсем любой может быть текст, то замени ([a-zA-Z0-9]+) на (.+)

alwex
13.06.2009, 18:06
спасибо большое

Велемир
16.06.2009, 23:32
Эээ,есть url вида http://localhost/test/s.php

Как замутить редирект на google.ee с помощью mod_rewrite ? оО

Pashkela
16.06.2009, 23:56
RedirectMatch (.*/test/s.php)$ http://google.ru$1

Велемир
17.06.2009, 00:53
Нууу,это не мод рерайт:(.Веля терь тоже так колдует!:(.В общем...

Options +Includes

RewriteEngine On
RewriteRule ^robots.txt$ /test/text.cgi

тупо то,что незаметна подмена урлов визуально(((

А вот теперь Веля хочет так:

http://localhost/robots.txt?id=рандомное число ---- исходный урл.
http://localhost/test.php?id=рандомное число - конечный урл

Не выходит ничего(

alwex
17.06.2009, 22:47
помогите с ЧПУ

есть ссылка вида: index.php?do=teleprog&act=archive&id=цифра. и мне надо чтобы оно делало редирект типо /teleprog/archive/цифра/

я тут сотворил одну. если не правильно исправьте.

RewriteRule ^teleprog/archive/([0-9]+)/$ index.php?do=teleprog&act=archive&id=$1 [L]

m0Hze
17.06.2009, 23:02
teleprog/archive/([0-9]+)

alwex
17.06.2009, 23:04
и смотрите ещё... у меня в базе храниться в виде время(15:23 например). Название программы. например
15:23. Новости. мне надо чтобы парсер при выходе все времена парсил в одном месте типо <b>15:23</b>, а другом <dt>15:23</dt>. Надо 2 регулярки... чтобы они заменивали даты... спасибо заранее

m0Hze
17.06.2009, 23:12
и смотрите ещё... у меня в базе храниться в виде время(15:23 например). Название программы. например
15:23. Новости. мне надо чтобы парсер при выходе все времена парсил в одном месте типо <b>15:23</b>, а другом <dt>15:23</dt>. Надо 2 регулярки... чтобы они заменивали даты... спасибо заранее
непонял

alwex
18.06.2009, 09:07
уже не надо. я сделал... спасибо за исправление...

alwex
18.06.2009, 13:50
а как сделать регулярку чтобы она получала значение "Любой текст"
в базе храниться текст:

<b>15:23</b> Программа

и надо чтобы она с этого розбивала и получала отдельно значение

15:23 и отдельно значение Программа.... (программа может быть (.*)

krypt3r
18.06.2009, 14:48
Что-то типа

preg_match_all ('/<b>(\d{2}:\d{2})<\/b>(.+?)(\z|\n)/', $str, $m);

alwex
18.06.2009, 15:20
спс

alwex
20.06.2009, 14:14
помогите. у меня есть ссылка вида
index.php?do=gallery&act=view&allbum=test&page=5

где test - текст, 5 - цифры.
я хотел сделать ЧПУ, но она не роботает

RewriteRule ^gallery/([a-zA-Z0-9]+)/([0-9]+) index.php?do=gallery&act=view&allbum=$1&page=$2 [L]

FireFenix
20.06.2009, 14:33
Без "^" сделай. "^" - означает начало строки, а gallery - не начало строки

alwex
20.06.2009, 14:37
ничего не изменилось. смотри у меня есть там ещё регулярки какие роботают, а вот эта нет

krypt3r
20.06.2009, 14:42
Слэш в конце регулярки поставьте

^gallery/([a-zA-Z0-9]+)/([0-9]+)/

alwex
20.06.2009, 14:45
ничего не изменилось...

m0Hze
20.06.2009, 14:51
^gallery/([a-zA-Z0-9]+)/([0-9]+)$

И пример использования.
Мой пример,это например:
http://site.ru/gallery/ArtoK7/98

alwex
20.06.2009, 14:55
всеравно... http://localhost/gallery/all/2/

krypt3r
20.06.2009, 14:55
alwex, обращайтесь так

http://site.ru/gallery/test/5/

без слэша получите 404

m0Hze
20.06.2009, 14:57
Алвекс, под мю регулярку слеш не нужен в конце

alwex
20.06.2009, 14:59
да как я только не обращался... там есть ещё 1 ЧПУ но пашет:

RewriteRule ^gallery/([a-zA-Z0-9]+) index.php?do=gallery&act=view&allbum=$1 [L]

alwex
20.06.2009, 15:04
а как бы переписать регулярку. мб другие варианты есть...

m0Hze
20.06.2009, 15:08
Ekpanipui sleshi oO
Tipo \/ ve3de noctaBb

alwex
20.06.2009, 15:09
сделал уже давно...

Gifts
20.06.2009, 15:09
alwex В следующий раз сразу пишите, что у вас еще там есть. Как вариант:
RewriteEngine On
RewriteRule ^gallery/([a-zA-Z0-9]+)/?$ index.php?do=gallery&act=view&allbum=$1 [L]
RewriteRule ^gallery/([a-zA-Z0-9]+)/([0-9]+)/?$ index.php?do=gallery&act=view&allbum=$1&page=$2 [L]

alwex
20.06.2009, 15:30
оО заработало. спс

krypt3r
20.06.2009, 15:32
Попробуйте объединить в одну регулярку.

RewriteRule ^gallery/([a-zA-Z0-9]+)/?([0-9]*)/?$ index.php?do=gallery&act=view&allbum=$1&page=$2 [L]

У меня по крайней мере, работает и /gallery/test, и /gallery/test/6

Fak1r
21.06.2009, 14:02
Доброго времени суток.

Пытаюсь составить регуляку в javascript.
Есть код:

var match;
var re = new RegExp("link\">Уничтожитель\\s?<\\s*Время\\sстроительства\\s([\\d:]+)", "gi");
while(match = re.exec(document.documentElement.innerHTML)){
alert(match);
}


по идее код должен возвращять время строительства, но что то не работает.

Кусок кода страци:

<td><a href="http://site.ru/xxx.php/0000000/47" title="" class="link"><img src="http://site.ru/xxx.php/0000000/47BOMBER.gif" title="Бомбардировщик" alt="Бомбардировщик" class="image" /></a></td>
<td style="vertical-align: top;"><a href=http://site.ru/xxx.php/0000000/47" title="" class="link">Бомбардировщик</a> (69 в наличии) <br />
Бомбардировщик был защиту.<br />
Необходимо Металл: 50.000 Кристалл: 25.000 Дейтерий: 15.000 <br />
Время строительства 00:45:00 </td>
<td><input type="text" name="40" value="0" size="3" maxlength="4" class="center" /></td>
</tr> <tr>
<td><a href="http://site.ru/xxx.php/0000000/47" title="" class="link"><img src="http://uni1.darkstar-nn.ru/images/buildings/STAR_DESTROYER.gif" title="Уничтожитель " alt="Уничтожитель " class="image" /></a></td>
<td style="vertical-align: top;"><a href="http://site.ru/xxx.php/0000000/47" title="" class="link">Уничтожитель </a> (16 в наличии) <br />
Уничтожитель - король среди военных кораблей. Его мультифланговые ионные, плазменные и гауссовые орудийные .<br />
Необходимо Металл: 60.000 Кристалл: 50.000 Дейтерий: 15.000 <br />
Время строительства 01:06:00 </td>
<td><input type="text" name="41" value="0" size="3" maxlength="4" class="center" /></td>

astrologer
21.06.2009, 15:15
<table id="stats">
<tr>
<td><a href="http://site.ru/xxx.php/0000000/47" title="" class="link"><img src="http://site.ru/xxx.php/0000000/47BOMBER.gif" title="Бомбардировщик" alt="Бомбардировщик" class="image" /></a></td>
<td style="vertical-align: top;"><a href=http://site.ru/xxx.php/0000000/47" title="" class="link">Бомбардировщик</a> (69 в наличии) <br />
Бомбардировщик был защиту.<br />
Необходимо Металл: 50.000 Кристалл: 25.000 Дейтерий: 15.000 <br />
Время строительства 00:45:00 </td>
<td><input type="text" name="40" value="0" size="3" maxlength="4" class="center" /></td>
</tr> <tr>
<td><a href="http://site.ru/xxx.php/0000000/47" title="" class="link"><img src="http://uni1.darkstar-nn.ru/images/buildings/STAR_DESTROYER.gif" title="Уничтожитель " alt="Уничтожитель " class="image" /></a></td>
<td style="vertical-align: top;"><a href="http://site.ru/xxx.php/0000000/47" title="" class="link">Уничтожитель </a> (16 в наличии) <br />
Уничтожитель - король среди военных кораблей. Его мультифланговые ионные, плазменные и гауссовые орудийные .<br />
Необходимо Металл: 60.000 Кристалл: 50.000 Дейтерий: 15.000 <br />
Время строительства 01:06:00 </td>
<td><input type="text" name="41" value="0" size="3" maxlength="4" class="center" /></td>
</tr>
</table>

<script type="text/javascript">

(function(document, test)
{
if(test)
{
document = { documentElement: document.getElementById('stats') }
}

var pattern = /link">Уничтожитель[\s\S]+Время строительства ([\d:]+)/i;
var target = document.documentElement.innerHTML;

var result = target.match(pattern);

alert(result && result[1]);
})(document, true);

</script>Хотя, может, стоит посмотреть в сторону xpath?

alwex
21.06.2009, 16:55
я делаю антиличь через .htaccess и в папке например стоит файл .htaccess и мне надо чтобы он делал редирект например на файл
file/1.exe но чтобы могли зайти только с определенного айпи и получить редирект.

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

krypt3r
21.06.2009, 23:15
Заюзать Order по типу

Order deny, allow
Deny from all
Allow from [valid-IP]

А правило записать что-то типа

RewriteRule ^file/?.+$ file/1.exe

alwex
21.06.2009, 23:17
а можно юзать и то и то в одноф файле

Gifts
21.06.2009, 23:42
alwex Что значит в одном файле?

Order deny,allow
Deny from all
Allow from [valid-IP]
RedirectMatch .* http://site.ru/file.exe

alwex
22.06.2009, 09:19
ааа, спс. как всегда выручаешь

LeRick
25.06.2009, 20:48
Сегодня впервые попробовал разобраться с пхп...:)
Пробую исправить недочеты в скрипте вап клик-клуба. И не могу никак сделать шаблон preg_match для ввода url в профиль.
Мне нужно, чтобы в поле для адреса можно было вставить только url. Без http.
Есть такой шаблон if(preg_match("/^((\w+\.){1,})\w{2,}$/i", $link))
но он не пропускает урлы с знаками ? и вобще все ссылки, отличные от sait.com
Помогите пожалуйста.

svesve
25.06.2009, 22:29
есть некая страница в которой все ссылки вида
article/index.php?id_page=21

каким образом можно их переделать в ЧПУ ? тобишь чтоб уже когда страница загрузилась все ссылки были articles21.html

прописал
RewriteEngine On
RewriteRule ^article([0-9]+)\.html?$ /article/index.php?id_article=$1

но всеравно на странице все ссылки ....index.php?id_page=21

или надо все ссылки переписывать во всех файлах???

SleepShadowWeb
26.06.2009, 02:25
есть некая страница в которой все ссылки вида
article/index.php?id_page=21

каким образом можно их переделать в ЧПУ ? тобишь чтоб уже когда страница загрузилась все ссылки были articles21.html

прописал
RewriteEngine On
RewriteRule ^article([0-9]+)\.html?$ /article/index.php?id_article=$1

но всеравно на странице все ссылки ....index.php?id_page=21

или надо все ссылки переписывать во всех файлах???

может вместо:
RewriteRule ^article([0-9]+)\.html?$ /article/index.php?id_article=$1

нужно:
RewriteRule ^article([0-9]+)\.html?$ /article/index.php?id_page=$1

MaSTeR GэN
26.06.2009, 12:50
ребят в php не силен (подскажите плиз регуляку для поиска текста между двумя 0x1 То есть что то вроде 0x1[text]0x1 заранее благодарен )))

Pashkela
26.06.2009, 12:56
<?php
$a = '0x1 blf-blf 0x1';
preg_match_all('|0x1(.*)0x1|',$a,$res);
print_r($res[1]);
?>

svesve
26.06.2009, 17:01
может вместо:
RewriteRule ^article([0-9]+)\.html?$ /article/index.php?id_article=$1

нужно:
RewriteRule ^article([0-9]+)\.html?$ /article/index.php?id_page=$1

это я ошибся все правильно там id_page стоит просто не ту запись скопирнул
суть вопроса таже

alwex
26.06.2009, 20:12
помогите сново)))

у меня в базе храниться так

Текст<br />Текст<br /> надо чтобы оно подсчитало количество этих Текст
Текст это (.*)

j0ker13
27.06.2009, 17:55
что за прикол?
$str="<img src=/sorry/image?id=7546628731245181042hl=ru border=1";
print $& if $str =~ m/=\d{0,19}/;
выдает только =
а
$str="<img src=/sorry/image?id=7546628731245181042hl=ru border=1";
print $& if $str =~ m/d=\d{0,19}/;
d=7546628731245181042
:)

diznt
02.07.2009, 17:34
Народ объясните человеческим языком что за символ "^" (без ковычек)
Просто я ни как не могу разжевать что это за символ! (читал несколько описаний все равно не понятно)
Ах да еще вместе с примерчиком!

L I G A
02.07.2009, 17:57
^ крышка, обозначает любой символ кроме тех ,которые перечислены после [^ и до].
пример:

<?php
echo preg_replace('/[^*.примерчиком!]/','<font color=red>бла</font>',"Ах да с примерчиком!");
?>

заменит все кроме "примерчиком!"

Gifts
02.07.2009, 18:57
L I G A Вы не правы. Ваша регулярка заменит много чего лишнего и не один раз

diznt Внутри квадратных скобок (например [^abcdef]) будет означать инверсию, то есть "любой знак, но НЕ a,b,c,d,e,f"

Вне квадратных скобок - будет означать начало строки. Например preg_match('/^abcd/' ....) будет искать строку начинающуюся на "abcd"

L I G A
02.07.2009, 19:56
L I G A Вы не правы. Ваша регулярка заменит много чего лишнего и не один раз

diznt Внутри квадратных скобок (например [^abcdef]) будет означать инверсию, то есть "любой знак, но НЕ a,b,c,d,e,f"

Вне квадратных скобок - будет означать начало строки. Например preg_match('/^abcd/' ....) будет искать строку начинающуюся на "abcd"
в данном случае она не заменит лишнего поскольку в предыдущих словах нет букв и символов которые есть в "примерчиком!",ну а "*" да сори автоматом поставил,там 1 раза хватит.

Gifts
02.07.2009, 21:21
L I G A Достаточно универсально НАДЕЯТЬСЯ что буквы из ПРОИЗВОЛЬНОЙ фразы не встретятся до нее, это раз. Вас можно было понять так - конструкция [^текст] позволяет исключить СЛОВОСОЧЕТАНИЕ, а не каждую отдельную букву из набора, это два. Три - хорошо, что PCRE модуль умен, иначе бы конструкция [^.] (с точкой внутри) исключала бы ЛЮБЫЕ символы в принципе

L I G A
02.07.2009, 22:33
2 спасибо за понимание.
3 что то вы бред несете сударь точка внутри [] теряет свой смысл
"любой символ" и обозначает простую точку .
>>иначе бы конструкция...
на иначе я вам скажу тоже не универсально надеяться.

ntldr
08.07.2009, 14:58
есть такой реврайт:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?mode=$1 [L,QSA]
ErrorDocument 404 /index.php?mode=error404
ErrorDocument 400 /index.php?mode=error400
ErrorDocument 500 /index.php?mode=error500

все ок, но на сайте стоит форум в папке /forum/ - как исключить её от реврайта?

Gifts
08.07.2009, 15:41
ntldr RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/forum/.*
RewriteRule ^(.*)$ /index.php?mode=$1 [L,QSA]
ErrorDocument 404 /index.php?mode=error404
ErrorDocument 400 /index.php?mode=error400
ErrorDocument 500 /index.php?mode=error500

Реврайт работать не будет для папки forum, однако ошибки 404 400 и 500 все так же будут редиректиться на индекс

mailbrush
13.07.2009, 16:09
#(\d{,9})#
Какая строка подходит под эту регулярку?

FireFenix
13.07.2009, 16:48
#(\d{,9})#
Какая строка подходит под эту регулярку?
Открывающая фигурная скобка, расположенная в недопустимой для квантификатора позиции, либо не соответствующая синтаксису квантификатора, интерпретируется как обыкновенная символьная строка. Например, {,6} не является квантификатором, а интерпретируется как символьная строка из четырех символов
©

alwex
14.07.2009, 11:18
привет всем, помогите плиз...

надо достать данные "ЛЮБОЙ ТЕКСТ" с
<tr><td width="390" valign="top"><font color="#000000"><p align="justify">ЛЮБОЙ ТЕКСТ</td></tr>

Shadow_p1raT
14.07.2009, 12:01
Йо,Думал я уже на php кодить разучился))
держи мой быдлокод)

<?php
$text = '<tr><td width="390" valign="top"><font color="#000000"><p align="justify">ЛЮБОЙ ТЕКСТ</td></tr>';
preg_match('~"justify">(.*)<\/td>~is',$text,$reg);
print_R($reg);// в $reg[1] будет ЛЮБОЙ ТЕКСТ
?>

Malunga
15.07.2009, 01:03
Всем привет, помогите с регуляркй

<tr class="abc">

<h1>123456778990</h1>

<div></div>


</tr>

вот такой кусочек кода. из него регулярка вытаскивает всё что между <tr></tr>
/<tr class="abc">(.*)</tr>/s

но как сделать запрет на слово целиком? я имею ввиду как [^"] запрещает двойную кавычку.
Так же нужно и тут, чтобы запрет стоял например на тег <h1>, т.е. что-то типа ([^<h1>]*).
но это не работает.


подскажите...

nc.STRIEM
15.07.2009, 01:16
попробуй так (.*?)<h1>
выберет все до тэга <h1>

KrafT
18.07.2009, 11:39
Привет!

Онлайн юзер

<img src="/res/images/labels/online.gif" alt="Находится в данный момент на сайте" /><br/>А л ё н а </td><td align="center" class="smallnormal"><div class="photoW " uid="3874000000360916803" nick="VLJUBLJONNIJ V NOCH,DJAVOLJONOK" mainPhotoId="3874000000090169113" lastLogin="1247892931551" sm="1" photodescr="113874000000090169113" >

Не онлайн юзер

<br/> bal cvetov</td><td align="center" class="smallnormal"><div class="photoW " uid="2166000001794935419" nick="LAURA" mainPhotoId="2166000000090885117" lastLogin="1247866964919" sm="1" photodescr="012166000000090885117" >


Как сделать чтоб скрипт находил uid="3874000000360916803", а именно 3874000000360916803 НО только с тех юзеров кто онлайн??

FireFenix
18.07.2009, 12:39
<?php

$text = '<img src="/res/images/labels/online.gif" alt="Находится в данный момент на сайте" /><br/>А л ё н а </td><td align="center" class="smallnormal"><div class="photoW " uid="3874000000360916803" nick="VLJUBLJONNIJ V NOCH,DJAVOLJONOK" mainPhotoId="3874000000090169113" lastLogin="1247892931551" sm="1" photodescr="113874000000090169113" >';
//$text = '<br/> bal cvetov</td><td align="center" class="smallnormal"><div class="photoW " uid="2166000001794935419" nick="LAURA" mainPhotoId="2166000000090885117" lastLogin="1247866964919" sm="1" photodescr="012166000000090885117" >';
$regex = '/online.gif" alt="Находится в данный момент на сайте".*<div class="photoW " uid="([^"]*)"/ims';
preg_match_all($regex, $text, $match);

print_r($match);

?>

alwex
21.07.2009, 13:12
помогите сделать регулярку чтобы сначало проверяло или есть в тексте

<!--dle_video_begin:любой текст-->ЛЮБОЙ ТЕКСТ<!--dle_video_end-->

и если есть то пусть ведергивает:

url:'ТУТ ДЕРГАТЬ'

FireFenix
21.07.2009, 13:22
<?php

$text =
'блабла
<!--dle_video_begin:любой текст-->ЛЮБОЙ ТЕКСТ<!--dle_video_end-->
блаблаurl:\'ТУТ ДЕРГАТЬ1\'блабла
url:\'ТУТ ДЕРГАТЬ2\'
блабла url:\'ТУТ ДЕРГАТЬ3\' блабла';

if (preg_match('/<!--dle_video_begin:.*?-->.*?<!--dle_video_end-->/ims', $text))
{
preg_match_all('/url:\'([^\']*)\'/ims', $text, $match);
print_r($match[1]);
}

?>

Наверное так, если я правильно понял

alwex
21.07.2009, 13:41
Оо, заработало, спасибо)

alwex
21.07.2009, 13:49
а какой функцией удаление похожих строк делаеться что бы была только 1 строка

FireFenix
21.07.2009, 13:59
array_unique() — Убрать повторяющиеся значения из массива

alwex
21.07.2009, 14:25
спс

alwex
21.07.2009, 20:20
нужна ещё помощь...

у меня есть текст где есть
текст(переменная $g),

надо сделать так чтобы он вырезал

$g,

я пробовал чреез str_replace но не хочет...

FireFenix
21.07.2009, 20:27
За то время, скока раз ты задал вопросов по регуляркам, можно было бы их уже выучить, а не задавать простейшие вопросы
<?php

$text = 'текст(переменная $g), текст(переменная $i), текст(переменная $k),';
preg_match_all('/\(.*?\$(.*?)\)/ims', $text, $match);
print_r($match);

?>

alwex
21.07.2009, 20:33
да я каждый раз учу. мне регулярки нужны по 10 раз в день но я спрашиваю меньше потому что половину сам пишу, а что не могу то не пишу, я имел введу вырезал
тип preg_replace...

FireFenix
21.07.2009, 20:38
каждый раз? там учить на 2 часа
preg_replace - не вырезает, а заменяет.... пора бы уже что-ли тебе и пхп выучить

alwex
21.07.2009, 20:40
я знаю, и мне надо заменять, просто я тормознул...

каких 2 часа? мой друг говорит что месяца

RESPECТ
23.07.2009, 20:27
Помогите с регуляркой:

<dt>Имя:</dt><dd><div style="width: 140px; overflow: hidden;"><a href="/id00900">вытащить_этот_текст</a></div></dd>

L I G A
23.07.2009, 20:40
<?php
$code='<dt>Имя:</dt><dd><div style="width: 140px; overflow: hidden;"><a href="/id00900">вытащить_этот_текст</a></div></dd>';
preg_match_all('/<a href="\/id00900">(.*)<\/a><\/div><\/dd>/i', $code, $matches);
echo "<pre>";
print_r ($matches[0][0]);
echo "</pre>";
?>

RESPECТ
23.07.2009, 21:12
L I G A, забыл написать, что id00900 - может быть разным, и

<dt>Имя:</dt><dd><div style="width: 140px; overflow: hidden;">

Является явным указателем этой ссылки, т.к. до этого есть такие ссылки...

PaCo
23.07.2009, 21:37
L I G A, забыл написать, что id00900 - может быть разным, и

<dt>Имя:</dt><dd><div style="width: 140px; overflow: hidden;">

Является явным указателем этой ссылки, т.к. до этого есть такие ссылки...

$the_text=<<<HTML
<dt>Имя:</dt><dd>
<div style="width: 140px; overflow: hidden;"><a href="/id00900">вытащить
_этот_текст</a></div>
</dd>
<dt>Имя:</dt><dd>
<div style="width: 140px; overflow: hidden;"><a href="/id00900">вытащить_этот_текст_2</a></div>
</dd>
HTML;
preg_match_all('#<div style="width: 140px; overflow: hidden;"><a href=.*[^>]>(.*)</a>#isU',$the_text,$match);
print_r($match);

Pashkela
23.07.2009, 21:40
<pre>
<?php
$a = '<dt>Имя:</dt><dd><div style="width: 140px; overflow: hidden;"><a href="/id00900">вытащить_этот_текст</a></div></dd>';
preg_match_all('|<dt>.*</dt><dd><div style=.*><a href=.*>(.*)</a></div></dd>|Ui',$a,$res);
print_r($res[1]);
?>
</pre>

Дикс
25.07.2009, 14:03
как распарсить строку типа


{"userId":"24389417527847511997","menuType":"User","fio":"Ольга Широкова ( ..."}</div></div></a></div></td></tr></table></div><div><img class="online"


делаю так:

preg_match_all('/{"userId":"([0-9]*)","menuType":"User","fio":"(.{0,30})"}<\/div><\/div><\/a><\/div><\/td><\/tr><\/table><\/div><div><img class="online"/', $body, $match);


не находит из-за символов " ( ..."
но в других случаях там вообще нет никаких символов, кроме латинских букв и пробелов

e4key
25.07.2009, 14:18
Дикс, лучше кинь пару запросов, чтобы понять что там быть может а что не может.

А так:


{"userId":"([0-9]+)","menuType":"User","fio":"(.*?)\s\( ..."}</div></div></a></div></td></tr></table></div><div><img class="online"


У меня отлично работает (python). ХЗ как там в PHP. Может нужно что-то дополнительно экранировать.

Дикс
25.07.2009, 15:13
да в принципе уже разобрался, просто увеличил {0, 600}
а концовка "( ..."" -- она вообще нестандартная, её не надо писать

L I G A
25.07.2009, 15:44
<?php
$code='{"userId":"24389417527847511997","menuType":"User","fio":"Ольга Широкова ( ..."}</div></div></a></div></td></tr></table></div><div><img class="online" )';
preg_match_all('/(?<!"userId":")(\d)+","menuType":"User","fio":"(.{0,30})(?=\( ..."}<\/div><\/div><\/a><\/div><\/td><\/tr><\/table><\/div><div><img class="online")/i', $code, $matches);
echo "<pre>";
print_r ($matches[0][0]);
echo "</pre>";
?>

alwex
25.07.2009, 19:50
помогите, написал регулярку, но не правильно почему-то...

вот есть текст:

<a href="/title/(любое)/" ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ>Тут тоже любой текст</a>

и мне надо что бы оно выдировало это с текста. я сделал:

preg_match_all('/<a href="\/title\/(tt\d{1,8})\/"[^>]*>([^<]+)<\/a>/',$imdb_site_result,$results, PREG_SET_ORDER )

L I G A
25.07.2009, 19:57
\d - все цифры)
и напиши что выдерать.

FireFenix
25.07.2009, 20:00
да выучи ты уже реглярки


<?php

$text = '<a href="/title/(любое)/" ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ>Тут тоже любой текст</a>';
preg_match_all('/<a href="\/title\/([^"]*)"([^>]*)>([^>]*)<\/a>/', $text, $match);

print_r($match);

?>


Array
(
[0] => Array
(
[0] => <a href="/title/(любое)/" ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ>Тут тоже любой текст</a>
)

[1] => Array
(
[0] => (любое)/
)

[2] => Array
(
[0] => ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ
)

[3] => Array
(
[0] => Тут тоже любой текст
)

)

alwex
25.07.2009, 20:00
я же написал что выдерать

<a href="/title/(любое)/" ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ>Тут тоже любой текст</a>

PaCo
25.07.2009, 20:03
Наверно стоит конкреизировать, тут можно понять что тебе все надо
/title/(любое)
ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ
Тут тоже любой текст

И почему вы такие изврашенсы? Неужели вам не будет удобнее использовать вместо // например ## без необходимости что то слешировать?

L I G A
25.07.2009, 20:05
<?php
$code='<a href="/title/(любое)/" ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ>Тут тоже любой текст</a>';
preg_match_all('/<a href="\/(.*)\/"[^><\/](.*)>(.*)<\/a>/i', $code, $matches);
echo "<pre>";
print_r ($matches);
echo "</pre>";
?>

L I G A
25.07.2009, 20:09
И почему вы такие изврашенсы? Неужели вам не будет удобнее использовать вместо // например ## без необходимости что то слешировать?
да удобней написать # и потом не тыкать слеш , но / уже автоматом ставлю.

alwex
25.07.2009, 20:11
млин, почему-то не помогло...

вот текст который парсер должен выдернуть

<p style="margin:0 0 0.5em 0;"><b>Media from&nbsp;<a href="/title/tt0412142/" onclick="(new Image()).src='/rg/find-media-title/media_strip/images/b.gif?link=/title/tt0412142/';">&#x22;House M.D.&#x22;</a> (2004)</b></p>


но мне нужно именно там где ссылка, а он нифига...

PaCo
25.07.2009, 20:17
<?php
$text=<<<HTML
<p style="margin:0 0 0.5em 0;"><b>Media from&nbsp;<a href="/title/tt0412142/" onclick="(new Image()).src='/rg/find-media-title/media_strip/images/b.gif?link=/title/tt0412142/';">&#x22;House M.D.&#x22;</a> (2004)</b></p>';
HTML;
preg_match_all('#<a href="(/title/.*)"#isU',$text,$match); print_r($match);

alwex
25.07.2009, 20:27
Всё, переделал я свой скрипт и улучшил немного и заработало и все вашы регулярки объеденил...)

Дикс
29.07.2009, 07:57
есть мыло на страничке
enquiries@themanchestercollege.ac.uk

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

preg_match_all('/([0-9A-Za-z\_\-]*)\@([0-9A-Za-z\-\_]*)\.([a-zA-Z]{2,5})/i', $return, $matches);


второй раз имейлы с двумя зонами

preg_match_all('/([0-9A-Za-z\_\-]*)\@([0-9A-Za-z\-\_]*)\.([a-zA-Z]{2,5})\.([a-zA-Z]{2,5})/i', $return, $matches2)


и соответственно получил один и тот же имейл

[0] => enquiries@themanchestercollege.ac
[1] => enquiries@themanchestercollege.ac.uk


как вытащить одной регуляркой все имейлы с одной и двумя зонами в конце?

Gifts
29.07.2009, 08:49
Диксpreg_match_all('/([0-9A-Za-z\_\-]*)\@([0-9A-Za-z\-\_]+)(\.[a-zA-Z]{2,5})+/i', $return, $matches);

Pashkela
29.07.2009, 13:23
<pre>
<?php
$text = 'Лабуда, anti_chat@yandex.ru, разный текст
Лабуда, enquiries@themanchester-college.ac, разный текст текста=)enqu578iries@themanchestercollege.ac .uk Приведите Лабуда, разный текст , разный текст пример текста=) Типо такого...';
preg_match_all('/[\w\-]+@[\w\-]+.\w+.\w+/', $text, $out);
print_r($out);
?>
</pre>

SeNaP
30.07.2009, 01:31
Здравствуйте, помогите пожалуйсто регулярку составить.
Есть такое вот HTML код
<head><title>13183-Купля/Продажа/Заработок в сети</title></head>
<body bgcolor="#239651" link="#006f11" vlink="#469453" text="#000000">
<form method="post" action="/?p=1&f=5&w=htm">
<table align="center" border="0" cellspacing="1" cellpadding="5" width="100%">
<tr><td align="center" bgcolor="#005522"><font color="#ffffff"><b>13183-Купля/Продажа/Заработок в сети</b></font></td></tr>
<tr><td bgcolor="#a2edc0">

<a href="/?p=0&amp;w=htm"><font color="#006f11">Форумы</font></a><br/>

<a href="/?p=1&amp;f=5&amp;w=htm&amp;o=t"><font color="#006f11">Популярные темы</font></a><br/>



</td></tr>
<tr><td bgcolor="#c5ffdc">


30/07 00:04]<b>Slimi</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274158&amp;w=htm&amp;pg=4">продам!</a></b>(11)<br/> <br/>
29/07 23:20#<b>][akep</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274156&amp;w=htm&amp;pg=4">Продам или обменяю сайт</a></b>(4)<br/> <br/>
29/07 23:21#<b>cranz</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274142&amp;w=htm&amp;pg=4">Куплю сайт</a></b>(1)<br/> <br/>
29/07 23:01]<b>lbast_ru</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274128&amp;w=htm&amp;pg=4">Продам перса</a></b>(0)<br/> <br/>
29/07 23:40]<b>mrus.org</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274127&amp;w=htm&amp;pg=4">Кто денег на щет кинет ???</a></b>(32)<br/> <br/>
29/07 23:06]<b>SimBeerSk</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274126&amp;w=htm&amp;pg=4">Продам кредиты</a></b>(5)<br/> <br/>
29/07 23:05]<b>yar__94</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274121&amp;w=htm&amp;pg=4">куплю сайты на вен или кмx</a></b>(5)<br/> <br/>


</td></tr>
Как можно отфильтровать только ники
SimBeerSk
cranz
][akep

Pashkela
30.07.2009, 02:26
<pre>
<?php
@ini_set("display_errors","1");
$a = '
<head><title>13183-Купля/Продажа/Заработок в сети</title></head>
<body bgcolor="#239651" link="#006f11" vlink="#469453" text="#000000">
<form method="post" action="/?p=1&f=5&w=htm">
<table align="center" border="0" cellspacing="1" cellpadding="5" width="100%">
<tr><td align="center" bgcolor="#005522"><font color="#ffffff"><b>13183-Купля/Продажа/Заработок в сети</b></font></td></tr>
<tr><td bgcolor="#a2edc0">

<a href="/?p=0&amp;w=htm"><font color="#006f11">Форумы</font></a><br/>

<a href="/?p=1&amp;f=5&amp;w=htm&amp;o=t"><font color="#006f11">Популярные темы</font></a><br/>



</td></tr>
<tr><td bgcolor="#c5ffdc">


30/07 00:04]<b>Slimi</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274158&amp;w=htm&amp;pg=4">продам!</a></b>(11)<br/> <br/>
29/07 23:20#<b>][akep</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274156&amp;w=htm&amp;pg=4">Продам или обменяю сайт</a></b>(4)<br/> <br/>
29/07 23:21#<b>cranz</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274142&amp;w=htm&amp;pg=4">Куплю сайт</a></b>(1)<br/> <br/>
29/07 23:01]<b>lbast_ru</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274128&amp;w=htm&amp;pg=4">Продам перса</a></b>(0)<br/> <br/>
29/07 23:40]<b>mrus.org</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274127&amp;w=htm&amp;pg=4">Кто денег на щет кинет ???</a></b>(32)<br/> <br/>
29/07 23:06]<b>SimBeerSk</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274126&amp;w=htm&amp;pg=4">Продам кредиты</a></b>(5)<br/> <br/>
29/07 23:05]<b>yar__94</b><br/><b><a href="/?p=3&amp;f=5&amp;t=3274121&amp;w=htm&amp;pg=4">куплю сайты на вен или кмx</a></b>(5)<br/> <br/>


</td></tr>';

preg_match_all('|<b>(.*)</b><br/><b><a href|',$a, $res);
print_r($res[1]);
?>
</pre>

SeNaP
30.07.2009, 18:19
Array
(
[0] => banana jam
[1] => =777=
[2] => Amwe y
[3] => savruslan
[4] => wikk
[5] => HaM
[6] => Prezident
)

Возможно ли как нибуть просто имена оставить?

Pashkela
30.07.2009, 18:23
Забавный вопрос, а у тебя там что, ссылки в комплекте что ли?

ЗЫЖ Расшифруй что тебе надо, вроде у тебя и так массив из имен

Можно переменным присваивать значение элемента массива, можно просто сразу массив имплодить и писать в файл - правда, вопрос непонятен

SeNaP
30.07.2009, 18:27
$a = file_get_contents('text.txt');
preg_match_all('|<b>(.*)</b><br/><b><a href|',$a, $res);
print_r($res[1]);
Выводит вот такое

Array
(
[0] => banana jam
[1] => =777=
[2] => Amwe y
[3] => savruslan
[4] => wikk
[5] => HaM
[6] => Prezident
)

Как можно вывести только имена, таком порядке

banana jam
=777=
Amwe y
savruslan
.....

Мозги вообще отказываются работать

FireFenix
30.07.2009, 18:29
for ($i = 0; $i < count($res[1]); $i++)
{
echo($res[1][$i] . '<br>');
}

вместо

print_r($res[1]);

SeNaP
30.07.2009, 18:33
for ($i = 0; $i < count($res[1]); $i++)
{
echo($res[1][$i] . '<br>');
}

вместо

print_r($res[1]);

Спасибо :)

Я до этого так делал

for ($i = 0; $i < count($res); $i++)
{
echo$res[$i];
}

И думал, чёже не так :D

mailbrush
30.07.2009, 18:42
Для работы с массивами используется цикл foreach.

Pashkela
30.07.2009, 18:52
т.е. while не катит что ли уже?:))) while пошустрее, имхо

#Wolf#
03.08.2009, 16:21
есть строка с тестом нефиксированной длинны
param=blablabla-sgd@34;
нужно получить все между param= и ;

Pashkela
03.08.2009, 16:33
<pre>
<?php
$a = "param=blablabla-sgd@34; param=blablabla111-sgd@34;ssdfgdfsg param=blablabla2222-sgd@34;";
preg_match_all('|param=(.*);|U',$a, $res);
print_r ($res[1]);
?>
</pre>

Gifts
08.08.2009, 14:31
FireFenix Не лениться и делать полную регулярку. (r\d{1,3})(g\d{1,3})(b\d{1,3})

alwex
13.08.2009, 10:21
все не над) написал сам

Gifts
21.08.2009, 02:26
DeluxeS Системной командой:
Для прав drwxrwxrwx:
find /папка/от/которой/плясать -type d -perm -0777 -ls
Список папок:
find /папка/от/которой/плясать -type d -print > /файл/куда/записывать

Велемир
23.08.2009, 23:36
Превед ночному пиплу! Схавайте,плз,такую версию:



if(preg_match_all('|<a href="readmsg?id=(.*?)">DarkForce</a></td>|',$r,$m)) {

foreach($m[1] as $result) {

echo "$result\r\n";

}

}

else {

echo "fuck you!";




}



Регулярка с mail.ru для письма,расположенного в папке Входящие.

DarkForce - это поле Автор письма(не мыло)

Исходное выглядит так:

<a href="readmsg?id=12510492610000000794">DarkForce</a></td>

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

PaCo
23.08.2009, 23:50
Эх веня,веня не забываем про спец символы - ?
Вобшем что то типа такого
'#<a href="readmsg\?id=(\d+)"#is'

Велемир
24.08.2009, 00:29
ххах))и вправду забыл.Попробую...пасип те,брат.Я прост ща от программинга отошёл,дела...и ремонт в квартире(.


ЗЫ: Регулярко РАБОТАЕТ.Чутка продвинулся.Терь вопрос: как проще сделать так(при отладке рнр скриптов),чтобы результат курл запроса выводился и не выводилсяю.когда мне нужно? Я поступил так: создал три функции - get,post и showget.Первые две шлют только гет или только пост запрос,но результата не показывают.Добавить хочу ещё showpost,исходя из вышеприведённой логики).Но кажется мне,что это решение не добротно(.Кто подскажет вариант попроще ?

b3
24.08.2009, 03:55
тобы результат курл запроса выводился и не выводилсяю.когда мне нужно?
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
CURLOPT_RETURNTRANSFER: При установке этого параметра в ненулевое значение CURL будет возвращать результат, а не выводить его.
Если нужно вернуть результат в переменную а не выветси в браузер то :

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ch);

Linuxoid
24.08.2009, 06:34
Надо выдернуть вот эту строчку из текстового файла: "work_codes/14479-26/1320143--347514.jpg". В названии картинки постоянно меняются цифры.

Gifts
24.08.2009, 09:18
Linuxoid preg_match('#work_codes[^\']+#')

Не делай бота под героев, надо играть честно :D

Linuxoid
24.08.2009, 09:28
Расскажу ситуацию про бота для героев.
Играть в эту игру не буду. Зарегистрировался вчера с целью сделать бота. Просто это очень хороший пример, где можно автоматизировать некий процесс. Сам я только за честную игру, тем более в героях это мне и не надо.

По коду: Не работает... Вот примерный пример. :)

$preg = "</tr><tr><td class=wb><img src='work_codes/14480-26/1320143--347523.jpg' width=140 height=60 border=0 name=imgcode>";
$capchalink = preg_match('#work_codes[^\']+#', $preg, $img);

$img возвращает "Array". Саму ссылку на картинку не дергает.

Gifts
24.08.2009, 09:40
Linuxoid Прежде чем что-то автоматизировать - почитайте мануалы, например.


$preg = "</tr><tr><td class=wb><img src='work_codes/14480-26/1320143--347523.jpg' width=140 height=60 border=0 name=imgcode>";
$capchalink = preg_match('#work_codes[^\']+#', $preg, $img);
var_dump($img);
// Или, если быть точным:
echo "<h1>{$img[0]}</h1>";

AngelOfFaith
25.08.2009, 18:26
как при помощи реврайта можно зделать чтобы всё запросы к сайту вида *.sait.ru отправлялись в одну папку, или прямо на скрипт? Например при запросе user.sait.ru браузер кидал на sait.ru/script.php?id=user , и при возможности что бы это делалось без доступа к конфам сервера

L I G A
25.08.2009, 18:46
как при помощи реврайта можно зделать чтобы всё запросы к сайту вида *.sait.ru отправлялись в одну папку, или прямо на скрипт? Например при запросе user.sait.ru браузер кидал на sait.ru/script.php?id=user , и при возможности что бы это делалось без доступа к конфам сервера
что то типа этого:

if (preg_match("#(.+).(.+).ru #i", $_SERVER['HTTP_HOST'])) {
header("Location: http://sait.ru/script.php?id=user");
} else {
header("Location: http://sait.ru");
}

AngelOfFaith
25.08.2009, 19:00
что то типа этого:

if (preg_match("#(.+).(.+).ru #i", $_SERVER['HTTP_HOST'])) {
header("Location: http://sait.ru/script.php?id=user");
} else {
header("Location: http://sait.ru");
}

И куда мне поставить этот скрипт? Мне надо что то типа автоматического создания поддомена, думаю это надо реализовать через htaccess, вот тока без доступа к конфигам такое не получается, а если есть доступ то надо при каждом добавлении такого поддомена перегружать апач

login999
26.08.2009, 15:47
Мб кто поможет с регулярками в принципе раньше все норм было, сейчас вот вошёл в ступор, есть регулярка приблизительно такого вида :

r'''\<li class\=g\>\<h3 class\=r\>\<a href\=\"(.*?)\" class\=\l\>(.*?)\<\/a\>\<\/h3\>'''

Знающие люди мну поймут :)

Она собирает кортежи, состоящие из двух текстов
Мне нужно, чтобы жрались все данные, кроме тех в которых встречается определенное слово (оно встречается в первой части (.*?)) т.е что-то типа (.*?[^\w someword]) как я понимаю, подскажите как это реализовать
P.S. Язык - Python
P.P.S. Если точно, то это даже не слово, а часть слова
Короч, нужно отобрать все ссылки, кроме тех ссылок, в которых встречается определенное слово, т.е. из
http://vasya.com
http://vasya1.com
http://vasya2.com
http://vasya3.com
http://vasya_name.com
http://vasya_name2.com
http://vasya_name3.com
Нужно выбрать все ссылки, в которых НЕ встречается _name
Эту очистку в принцип то можно сделать и средствами самого Python, но хочется переделать регулярку...

b3
26.08.2009, 16:08
У тебя в регулярке слишком много всего екранировано помоему.
r'''<li class=g><h3 class=r><a href=\"(.*?)\" class=l>(.*?)<\/a><\/h3>'''

login999
26.08.2009, 16:11
У тебя в регулярке слишком много всего екранировано помоему.
Да экранирование там в принципе не главное, просто регулярка хватает лишнее, выдирает как сами ссылки, так и целые блоки хтмл кода, они в принципе под нее подпадают...
Там по принципу "Лучше перебдеть чем недобдеть"

Pashkela
26.08.2009, 16:41
Конкретно для этого случая вот так примерно (на пыхе):


<pre>
<?php
$s = '
href="http://vasya.com "class
href="http://vasya1.com "class
href="http://vasya2.com "class
href="http://vasya3.com "class
href="http://vasya_name.com "class
href="http://vasya_name1.com "class
href="http://vasya_name2.com "class';

preg_match_all('#href="(http://vasya[^_].*) "class#Uis',$s,$z);
print_r($z);
?>
</pre>


целое слово-исключение как в регулярку поставить - хз

Т.е. скорее всего никак, только если вторая регулярка по уже полученному массиву из первой или в цикле (опять же потом) прогонять полученные результаты на предмет совпадения ненужного слова в строке в целом

Byrger
27.08.2009, 16:27
Есть модРеврайт

RewriteRule ^([a-zA-Z0-9]+)/ index.php?action=$1
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/ index.php?action=$1&act=$2

Но когда я сделал такой код перестались открываться файлы допустим css/style.css img/image.gif

Как исправить?

gumplen2006
27.08.2009, 17:02
Здравствуйте. Хочу сделать следующую вещь: есть сайт, у которого много субдоменов, которые хранятся в папке subdomains/имя_субдомена. Я сделал следующий файл .htaccess:
RewriteCond %{HTTP_HOST} ^(.*)\.site\.com\.ua$
RewriteRule (.*)$ subdomaine/%1/$1
где %1 - должно быть имя субдомена, а $1 - имя открываемого файла.
Что-то не пашет так. Работает только, когда прописываю так:
RewriteCond %{HTTP_HOST} ^(.*)\.site\.com\.ua$
RewriteRule (.*)$ http://site.com.ua/subdomaine/%1/$1
Но в таком случае пользователь видит адрес http://site.com.ua/subdomaine/имя_субдомена/имя_файла
а я добиваюсь такого:
http://имя_субдомена.site.com.ua/имя_файла
В общем, помогите, кто чем может.

gumplen2006
27.08.2009, 17:07
Есть модРеврайт

RewriteRule ^([a-zA-Z0-9]+)/ index.php?action=$1
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/ index.php?action=$1&act=$2

Но когда я сделал такой код перестались открываться файлы допустим css/style.css img/image.gif

Как исправить?
Я вообще не спец, но, кажется, ты забыл добавить в регулярное выражение точку

Byrger
27.08.2009, 17:25
Я вообще не спец, но, кажется, ты забыл добавить в регулярное выражение точку
Это ничего не меняет...

Gifts
27.08.2009, 18:21
Byrger
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9]+)/ index.php?action=$1
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/ index.php?action=$1&act=$2

gumplen2006 Так просто тут не получится, придется выкручиваться: RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?[^.]+\.site\.ru$
RewriteCond %{REQUEST_URI} !/subdomaine
RewriteRule ^(.+)$ %{HTTP_HOST}$1 [C]
RewriteRule ^(www\.)?([^.]+)\.site\.ru/?(.*) /subdomaine/$2/$3 [L]


AngelOfFaith Аналогично с предыдущим для вашего случая, только вместо subdomaine нужно будет писать путь до скрипта

FireFenix Побуквенное отрицание не прокатит, если перед ним стоит .* какой нить, и даже без него - привяжется со второй буквы отрицание

login999 Без условных подмасок перла - сложно, но возможноa = '''
href="http://vasya.com "class
href="http://vasya1.com "class
href="http://vasya2.com "class
href="http://vasya3.com "class
href="http://vasya_name.com "class
href="http://vasya_name1.com "class
href="http://vasya_surname1.com "class
href="http://vasya_familiya123123123.com "class
href="http://vasya_name2.com "class'''

print 'Пример с 3 словами', re.findall(r'''(http://(?!.*(?:surname|familiya|name2))(?(1)|.*)\.com)''' ,a)
print 'Пример с 2 словами', re.findall(r'''(http://(?!.*(?:surname|name2))(?(1)|.*)\.com)''',a)

ph1l1ster
01.09.2009, 00:20
del

Gifts
01.09.2009, 00:26
ph1l1ster На перл сами переводите preg_match("~This links 666[\s\S]*?<td class="data">([^<]+)[\s\S]*?<td class="data">([^<]+)~msi",$in,$res);

Naydav
04.09.2009, 16:56
Есть текст:

<td width="25%">
<img src="http://www.converse.com/media/product/102740/standard/102740_m.jpg"/>
<br />
<a href="/products/shoes/sales/102740" title="Pro Leather 1976">Pro Leather 1976</a><br />
Price: $70
</td>

<td width="25%">
<img src="http://www.converse.com/media/product/102741/standard/102741_m.jpg"/>
<br />
<a href="/products/shoes/sales/102741" title="Pro Leather 1976">Pro Leather 1976</a><br />
Price: $70
</td>

<td width="25%">
<img src="http://www.converse.com/media/product/508726/standard/508726_m.jpg"/>
<br />
<a href="/products/shoes/sales/508726" title="Angeles LE">Angeles LE</a><br />
Price: $55
</td>

Нужно его распарсить, что бы его получить массив, в котором значения, это то, что между <td width="25%"> и </td>

Нужен результат
<img src="http://www.converse.com/media/product/102741/standard/102741_m.jpg"/>
<br />
<a href="/products/shoes/sales/102741" title="Pro Leather 1976">Pro Leather 1976</a><br />
Price: $70



$sPattern = '|(.*)<td width="25%">(.*)</td>(.*)|s';
preg_match_all( $sPattern, $this->sContent, $aMatches );
print_r( $aMatches[2] );

Запоминает, тольк то, что в ПОСЛЕДНЕЙ я чейке
Нужно запомнить все ячейки

Спасибо!

Naydav
04.09.2009, 17:10
#Wolf#
С preg_match_all и делал, смотри выше, я поправил
НЕ РАБОТАЕТ

L I G A
04.09.2009, 17:20
2#Wolf#
<?php
$kod=file_get_contents('http://forum.antichat.ru/avatars/avatar52937.gif');
file_put_contents ('ava.gif',$kod );
?>

Pashkela
04.09.2009, 17:26
Есть текст:

<td width="25%">
<img src="http://www.converse.com/media/product/102740/standard/102740_m.jpg"/>
<br />
<a href="/products/shoes/sales/102740" title="Pro Leather 1976">Pro Leather 1976</a><br />
Price: $70
</td>

<td width="25%">
<img src="http://www.converse.com/media/product/102741/standard/102741_m.jpg"/>
<br />
<a href="/products/shoes/sales/102741" title="Pro Leather 1976">Pro Leather 1976</a><br />
Price: $70
</td>

<td width="25%">
<img src="http://www.converse.com/media/product/508726/standard/508726_m.jpg"/>
<br />
<a href="/products/shoes/sales/508726" title="Angeles LE">Angeles LE</a><br />
Price: $55
</td>

Нужно его распарсить, что бы его получить массив, в котором значения, это то, что между <td width="25%"> и </td>

Нужен результат




$sPattern = '|(.*)<td width="25%">(.*)</td>(.*)|s';
preg_match_all( $sPattern, $this->sContent, $aMatches );
print_r( $aMatches[2] );

Запоминает, тольк то, что в ПОСЛЕДНЕЙ я чейке
Нужно запомнить все ячейки

Спасибо!


<pre>
<?php
$a = '<td width="25%">
<img src="http://www.converse.com/media/product/102740/standard/102740_m.jpg"/>
<br />
<a href="/products/shoes/sales/102740" title="Pro Leather 1976">Pro Leather 1976</a><br />
Price: $70
</td>

<td width="25%">
<img src="http://www.converse.com/media/product/102741/standard/102741_m.jpg"/>
<br />
<a href="/products/shoes/sales/102741" title="Pro Leather 1976">Pro Leather 1976</a><br />
Price: $75
</td>

<td width="25%">
<img src="http://www.converse.com/media/product/508726/standard/508726_m.jpg"/>
<br />
<a href="/products/shoes/sales/508726" title="Angeles LE">Angeles LE</a><br />
Price: $55
</td>';

$sPattern = '|(.*)<td width="25%">(.*)</td>(.*)|Uis';
preg_match_all( $sPattern, $a, $aMatches );
print_r($aMatches[2]);

?>
</pre>

Naydav
04.09.2009, 17:32
Pashkela

Спасибо!

Блин полный бред, у меня такое же выражение было , не работало :)
Я уже начал волноватся :)
`U` в нижнем регистре написал
Pashkela, СПАСИБО!!!

попугай
05.09.2009, 12:46
Как написать htaccess, чтобы при обращении к указанным мной несуществуемым папкам редиректило на скрипт, на другом серваке с передачей имени запрошенной папки? Htaccess не в корне должен быть, а в подпапке.

Например,
при обращении к

http://server.com/papka/lala1/?id=4
редиректило на http://server2.com/papka2/script.php?data=lala1

При обращении к

http://server.com/papka/lala2/?id=9
на
http://server2.com/papka2/script.php?data=lala2


Где, papka и papka2 - реально существующие папки

и тд.

попугай
05.09.2009, 13:15
Сделал так

RedirectMatch (\.lala1) http://server2.com/papka2/script.php?data=lala1
RedirectMatch (\.lala2) http://server2.com/papka2/script.php?data=lala2


Редиректит, но знак вопроса урленкодится почему то, то есть редиректит на
http://server2.com/papka2/script.php%3Fdata=lala1,

а не на

http://server2.com/papka2/script.php?data=lala1


Почему так?

Gifts
05.09.2009, 14:34
попугай RewriteEngine On
RewriteRule ^/papka/(.+)/ http://server2.com/papka2/script.php?data=$1 [R,L]

Или
RewriteEngine On
RewriteBase /papka
RewriteRule ^(.+)/?.* http://server2.com/papka2/script.php?data=$1 [R,L]

попугай
05.09.2009, 14:50
Ага, спасибо. Сделал так

RewriteEngine On
RewriteRule ^lala1/(.*) http://server2.com/papka2/script.php?data=lala1 [R,L]

Работает

Linuxoid
06.09.2009, 20:15
А как регуляркой выразить md5 хеш? То есть на странице находится много md5 хешей маски [a-f0-9]{32}... Надо их все собрать...
Регулярки пытаюсь осваивать, но очень много вопросов пока...

wildshaman
06.09.2009, 20:26
<?php
$str="тут страница";
preg_match_all("|([a-f0-9]{32})|is", $str, $ret);
print_r($ret);
?>

imajo.ati
06.09.2009, 22:37
как из текста удалить все комментарии вида /* */ ?
комментарии могут быть такими: /** /* /*** * /*ф* ***/

кое-что уже пробовал:

~/\*{2,}/~
~/\*+(.*?)*\*+/~s

первое удаляет это: /****/ второе удаляет все остальные случаи..
но как-то я не совсем уверен в 100% работоспособности

может кто подскажет способ получше?
и объясните пожалуйста, что означает ".*?" ?

Gifts
07.09.2009, 00:20
imajo.ati preg_replace('#\s/\*[\s\S]*\*/\s#U','',$str);
http://ru.wikipedia.org/wiki/Regexp - читать раздел "жадная и ленивая квантификация"

imajo.ati
07.09.2009, 19:13
imajo.ati preg_replace('#\s/\*[\s\S]*\*/\s#','',$str);
http://ru.wikipedia.org/wiki/Regexp - читать раздел "жадная и ленивая квантификация"
<?php

$str = '/* hello */ world! /* 123 */';
echo preg_replace('#\s/\*[\s\S]*\*/\s#','',$str);

?>

твой регэксп не работает, не удаляет ничего.

за жадную квантификацию спасибо, уже читаю.

Gifts
07.09.2009, 19:35
imajo.ati Перед и после - желательно чтобы стоял пробельный символ:
$str = ' asddasd asd asd sd sads ad asdas a /* hello */ world! /* 123 */ asds adsa dasdas das';
echo preg_replace('#\s/\*[\s\S]*?\*/\s#','',$str);
Но можно и без него ессесн:
$str = '/* hello */ world! /* 123 */';
echo preg_replace('#/\*[\s\S]*?\*/#','',$str);

FireFenix
07.09.2009, 19:40
<?php

$text = '
/*
абабаббабаб
*/
тут код проги
/** ещё один камент **/
текст
/***
ещё один глупый камент
***/
здесь могла быть ваша реклама!';

$result = preg_replace('/(\/\*.*?\*\/)*/ims', '', $text);

echo($result);

?>
мой вариант +)

astrologer
07.09.2009, 23:11
может кто подскажет способ получше? Тебе нужен парсер. Если, конечно, в твои планы не входит бить код, потому что регулярные выражения всё равно будут фейлить.
Пример:$pictures = glob('images/*');
/* Комментарий */
process($pictures);

imajo.ati
08.09.2009, 10:05
astrologer,
спасибо за замечание, я уже был в курсе этого, когда просил регулярное выражение.

в планы входит сначала заменить все строки в тексте на что-то такое:
%STRING_000001_(md5_заменённой_стро и)_(случайное_число_прохода _парсера)%
а потом удалить все комментарии.

может быть выскажешь свои мысли по этому поводу? будет ли это работать?

astrologer
09.09.2009, 01:10
в планы входит сначала заменить все строки в тексте на что-то такое:
%STRING_000001_(md5_заменённой_стро и)_(случайное_ число_прохода_парсера)%
а потом удалить все комментарии. Не получится, причём по той же причине (выяснение которой, как всегда, остается читателю).

P.S. /(\/\*.*?\*\/)*/ims#\s/\*[\s\S]*?\*/\s#~/ (?:[^*]++| (?! ))* /~

KaMiKadZe
11.09.2009, 16:06
$str = "http://localhost/#qwerty=text#aaa22";
preg_match_all ('/=(.*)#aaa(.*)/',$str,$arr);

Даст
text
22
Но если строка $str = "http://localhost/#qwerty=text";
Ничего не выдаст, как сделать так чтобы выдавало? =)

FireFenix
11.09.2009, 16:16
$str = "http://localhost/#qwerty=text#aaa22";
preg_match_all ('/=(.*)#aaa(.*)/',$str,$arr);

Даст
text
22
Но если строка $str = "http://localhost/#qwerty=text";
Ничего не выдаст, как сделать так чтобы выдавало? =)

<?php

$str = "http://localhost/#qwerty=text";

preg_match_all ('/=(.*)#aaa(.*)|=(.*)/',$str,$arr);

print_r($arr);

?>

$match[1] и $match[2] - где 2 аргумента
$match[3] - где 1 аргумент

m0Hze
12.09.2009, 23:46
$test = ':0.4.5.14.25:1.18.28:2.3.22.31:6.13.15.20.24.27:7 .30:8.9.19.21:10.12.17:11.26:16:23:29:';

Необходимо вытащить все вхождения:
:цыферки:
Получаеться только через 1 :(
// Неактуально,но хочеться увидеть регексп,для общего.

FireFenix
12.09.2009, 23:53
$test = ':0.4.5.14.25:1.18.28:2.3.22.31:6.13.15.20.24.27:7 .30:8.9.19.21:10.12.17:11.26:16:23:29:';

Необходимо вытащить все вхождения:
:цыферки:
Получаеться только через 1 :(
// Неактуально,но хочеться увидеть регексп,для общего.


<?php

$test = ':0.4.5.14.25:1.18.28:2.3.22.31:6.13.15.20.24.27:7 .30:8.9.19.21:10.12.17:11.26:16:23:29:';

$regex = '/\:([\.\d]+)/';

preg_match_all($regex, $test, $match);

print_r($match);

?>

p.s. поправил. Спасибо Gift =)

или вначале убираем с концов ':' и через explode(':', $test);

Gifts
13.09.2009, 01:15
m0Hze $str = ':0.4.5.14.25:1.18.28:2.3.22.31:6.13.15.20.24.27:7 .30:8.9.19.21:10.12.17:11.26:16:23:29:';
preg_match_all('#(?<=:)[^:]+(?=:)#si',$str,$res);
var_dump($res);
// Или если обрамляющего текста нет, то вообще так:
preg_match_all('#[^:]+#si',$str,$res);
var_dump($res);


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

m0Hze
13.09.2009, 21:46
Сломаем мозг вместе.
имеем страничку: http://www.google.com/search?hl=en&q=antichat
Нужно получить все полученые результаты(ссылки,с тайтлами).
Если загнать пример в переменную - тобиш 1 сцылку,то регулярка проходит,но со страницы я немогу выдрать ничего.
Использую простую:

preg_match_all('#<a href="(.*)" class="l">(.*)</a>#',$text,$match);

Все время пустая.Уже испробывал все известные мне флаги,но результата - 0.

Pashkela
13.09.2009, 21:50
Не очень понял, про что ты, но мой скрипт валяется либо в полезных скриптах, либо еще где:


<?php
// Парсер url после выдачи гугла по запросу
$handler=fopen('log.txt','w'); // если не хотим терять старые данные - то "a+"
$limit = 0;
$zapros = "antichat"; // Наш запрос для поиска
$page_start = 0; // Стартовая страница из расчета 100 результатов выдачи на страницу
$page_end = 200; // Последняя страница из расчета 100 результатов выдачи на страницу
function parse_serp($engine, $query, $limit)
{
if ($limit<100) {$request = 'http://www.google.com/ie?hl=ru&num=100&start=' . $limit. '&lr=&q='.urlencode(trim($query));}
if ($limit>=100) {$request = 'http://www.google.com/ie?q=' . urlencode(trim($query)) . '&num=100&hl=ru&lr=&start=' . $limit . '&sa=N';}
$pattern = '/<a title="(.*)" href=(.*)>(.*)<\/a>/isU';
$result = file_get_contents($request);
if(preg_match_all($pattern, $result, $matches))
{
for ($i=0; $i<count($matches[0]); $i++)
{
$link = $matches[2][$i];
$serp[] = $link;
}
}
return $serp;
}
for ($i=$page_start;$i<=$page_end;$i++)
{
$result = parse_serp("google", $zapros, $i);
$log = implode("\r\n",$result);
if($handler) {fwrite($handler,$log);}
$i=$i+100;
if ($i>100) {$i=$i-1;}
}
fclose($handler);
echo "Все данные были сохранены в log.txt";
?>


На текущий момент есть многопоточный и с поддержкой прокси. Стоимость 10 000$

PS: Сорри, если недопонял вопрос

wildshaman
13.09.2009, 22:04
2мохзе:

<?php
$t=file_get_contents("http://www.google.com/search?hl=en&q=antichat");
preg_match_all('|<h3 class=r><a href="(.*?)" class=l>(.*?)</a>|', $t, $out);
for ($i=0; $i<count($out[1]); $i++)
echo $out[1][$i]." - ".$out[2][$i]."<br>";

?>

Patronik
15.09.2009, 17:58
есть строка 158 разних слов не считаю символи пунктуации
надо разбить ее на строки по 6 слов! и записать в масив

Architek86
18.09.2009, 22:41
дан код:
<table>бла-бла a1a1a1 бла-бла</table><table>бла-бла a2a2a2 бла-бла</table><table>бла-бла a3a3a3 бла-бла</table>.............
как найти и удалить, к примеру, <table>бла-бла a2a2a2 бла-бла</table>
т.е. preg_replace($pattern,'',$content)
$pattern чему будет равен?
Думал, так сделать: <table>(.*)a2a2a2(.*)</table>, но тогда сюда попадает ведь весь текст.

svesve
18.09.2009, 22:53
тебе надо удлаить a2a2a2a2? или то что сбоку?

Architek86
18.09.2009, 23:21
надо удалить всю таблицу, содержащую в себе a2a2a2a2 (например), т.е. от <table> до </table> включая и эти теги.

PaCo
18.09.2009, 23:34
дан код:
<table>бла-бла a1a1a1 бла-бла</table><table>бла-бла a2a2a2 бла-бла</table><table>бла-бла a3a3a3 бла-бла</table>.............
как найти и удалить, к примеру, <table>бла-бла a2a2a2 бла-бла</table>
т.е. preg_replace($pattern,'',$content)
$pattern чему будет равен?
Думал, так сделать: <table>(.*)a2a2a2(.*)</table>, но тогда сюда попадает ведь весь текст.
Cтавить жадность поменьше e.g.:
#<table>.*a2a2a2.*</table>#Us

Patronik
22.09.2009, 13:15
Написал выражуху для поиска url в тексте
$pattern = "/^[http://www|www]+(\.[a-z])+(\.[a-z])*$/";

$find = preg_match($pattern, $text);

А пхп выдает мне
Warning: preg_match(): Empty regular expression in D:\Program Files\PHP Expert Editor
4.3\phpF.tmp on line 9
Что не так?

Pashkela
22.09.2009, 13:40
Ошибка синтаксиса в регулярном выражении - когда в начале и в конце регулярки "/", то надо экранировать все спецсимволы, т.е. "http:\/\/", или сделать так:


<pre>
<?php
@ini_set("display_errors","1");
$text = 'wetwgsdg http://site.ru sdgdsfgs34564325 http://www.site.ru/index.php ывпывапып www.rambler.ru';
$pattern = "#(http://[^\s]+)|(www.[^\s]+)#";
preg_match_all($pattern, $text, $res);
print_r ($res[0]);
?>
</pre>

Patronik
22.09.2009, 13:51
Спасибо! Понял!

Patronik
22.09.2009, 22:19
if( preg_match("#(http://[^\s]+)|(www.[^\s]+)#i", $line, $resalt) )
{
$line = preg_replace("#(http://[^\s]+)|(www.[^\s]+)#i", '<a href="'.$resalt[0].'">'.$resalt[0].'</a>', $line);
}

Подскажите как нормальную подсветку урл сделать. Делаю так как напсиал подчвечивает только урл начинающиеся с http а если начинаеться с www то некоректно работает.

m0Hze
22.09.2009, 22:39
Неправельно,делай сначало поиск,затем просто:
preg_raplace($match[1],'<a href="'.$match[1].'">lolol</a>,$text);
В цыкле.

xtra
24.09.2009, 22:16
ребята, что нужно добавить в .htaccess чтобы и http://site.com/link.php и http://site.com/link/ были одним и темже ?

и ещё вопрос.

я постараюсь максимально понятно изложить свою мысль. как правильно составить .htaccess чтобы при запросе неверной страницы (404) (http://site.com/download/drama.mp3.html) небыло редиректа на 404.пхп а писало File "file drama.mp3 not found"

тоесть подставить можно заместо drama.mp3 всё что угодно, и если файла нету - выплёвывает что такого файла нету

zifanchuck
25.09.2009, 23:51
а как составить регулярку чтобы из
http://getdle.org.ru/uploads/posts/2009-09/thumbs/1253897356_1.gif
получить
1253897356_1.gif
пробовал примерно так #\/(.*)\.jpg#iU
получаю
/getdle.com/uploads/posts/2009-09/thumbs/1252870317_full
ссылки разные будут так что нужен какойто универсайльный... надеюсь на помощь

L I G A
25.09.2009, 23:56
а как составить регулярку чтобы из
http://getdle.org.ru/uploads/posts/2009-09/thumbs/1253897356_1.gif
получить
1253897356_1.gif
пробовал примерно так #\/(.*)\.jpg#iU
получаю
/getdle.com/uploads/posts/2009-09/thumbs/1252870317_full
ссылки разные будут так что нужен какойто универсайльный... надеюсь на помощь
http://getdle.org.ru/uploads/posts/2009-09/thumbs/1253897356_1.gif
пробовал примерно так #\/(.*)\.jpg#iU

[dei]
25.09.2009, 23:58
а как составить регулярку чтобы из
http://getdle.org.ru/uploads/posts/2009-09/thumbs/1253897356_1.gif
получить
1253897356_1.gif
пробовал примерно так #\/(.*)\.jpg#iU
получаю
/getdle.com/uploads/posts/2009-09/thumbs/1252870317_full
ссылки разные будут так что нужен какойто универсайльный... надеюсь на помощь
#([^/]*)$#

mailbrush
26.09.2009, 00:01
Вот такой вопрос... Почему в регулярках чаще всего юзают #([^/]*)$# Что-то типа такого... Я знаю синтаксис, здесь - всё, кроме слеша. Ведь можно сложить полный регекс...

zifanchuck
26.09.2009, 00:03
#([^/]*)$#
спс

http://getdle.org.ru/uploads/posts/2009-09/thumbs/1253897356_1.gif
пробовал примерно так #\/(.*)\.jpg#iU

туплю(

.::BARS::.
28.09.2009, 16:21
есть страницы
site.ru/p/123
site.ru/p/124
site.ru/p/125
site.ru/p/126
ну и так далее....
я обращаюсь(точнее хочу обратиться) к ним как site.ru/?a=p&b=123 и т.д.

как это сделать... что бы при втором варианте иметь ответ такой же как и в первом!?

[dei]
28.09.2009, 23:24
есть страницы
site.ru/p/123
site.ru/p/124
site.ru/p/125
site.ru/p/126
ну и так далее....
я обращаюсь(точнее хочу обратиться) к ним как site.ru/?a=p&b=123 и т.д.

как это сделать... что бы при втором варианте иметь ответ такой же как и в первом!?

если я правильно тебя понял..

.htaccess
RewriteEngine On
RewriteRule ^p/(\d+) index.php?a=p&b=$1

.::BARS::.
28.09.2009, 23:39
ага.... только что то не сработало...

mailbrush
28.09.2009, 23:45
ага.... только что то не сработало...
Все работает, проверено :)
Проверь, установлен ли у тебя mod_rewrite...

b3
29.09.2009, 14:47
Нужно две универсальные регулярки, которые без ошибок будут искать в тексте ссылки и имейл адреса.

Pashkela
29.09.2009, 14:55
mail:

/[\w\-]+@[\w\-]+.\w+.\w+/

url:

#(http://[^\s]+)|(www.[^\s]+)#

b3
29.09.2009, 15:05
Pashkela
#(http://[^\s]+)|(www.[^\s]+)#
а если ссылка вида ? =\
<a href="/vote/">

Творя регулярка для мыл, результат:

$str = 'qwqwqw-qw.wqwq@wqwqw.wqwq.wq.wq';
preg_match('/[\w\-]+@[\w\-]+.\w+.\w+/',$str,$matches);
print_r($matches);

Array ( [0] => wqwq@wqwqw.wqwq.wq )
Некатит


ЗЫ все неактуально, написал сам.

kevmen
08.10.2009, 16:07
<td><div class="block">
<img src="bg.gih" hspace="5">
content
<li><ul>asdfasdkajsdf



</div>
</td>
нужно извлечь содержание в тегах див, ничего не выходит

m0Hze
08.10.2009, 16:17
$text = ' <td><div class="block">
<img src="bg.gih" hspace="5">
content
<li><ul>asdfasdkajsdf
</div>
</td> ';
preg_match('#<div class=\"block\">(.*)<\/div>#isU',$text,$match);
print_r($match);

Если я правильно понял

Insane bboy
14.10.2009, 02:04
помогите с регулярным выражением нужно парсить со страницы данные об мыльном аккаунте
данные в таком виде:
mail1@mail.ru-pass1
mail2@mail.ru-pass2
данных много, много и мусора, хотелось бы универсальную регулярку которая не только майлру акки парсила бы, может кто помочь?

b3
14.10.2009, 04:53
На скорую руку, помоему вполне робит

<?php
$str = '
mail1@mail.ru-pass1
mail2@mail.ru-pass2
';
preg_match_all('#(([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6})\-(.*?)#Ui',$str,$e);
$count = count($e[1]);
for ($i=0;$i < $count; $i++) {
echo $e[1][$i].';'.$e[5][$i].'<br>';
}
?>

crazy~driver
14.10.2009, 20:35
подскажите, где ошибка?
preg_match("@http://site.ru/[a-z]{10}\.php@",$str)

krypt3r
14.10.2009, 21:12
регулярка соответствует урлам типа

http://site.ru/qwrtyuiomp.php
http://site.ru/tipmjfvsdt.php
http://site.ru/cnkondctio.php

Предполагалось-то что получить?

b3
14.10.2009, 21:27
подскажите, где ошибка?
слэши тоже нужно екранировать, тоесть:
preg_match("@http:\/\/site\.ru\/([a-z]{10})\.php@",$str,$matches);
print_r($matches);

crazy~driver
14.10.2009, 21:47
слэши тоже нужно екранировать, тоесть:
preg_match("@http:\/\/site\.ru\/([a-z]{10})\.php@",$str,$matches);
print_r($matches);


Все равно не работает
_________________________

файл deystvie.txt


имя юзера - admin
ip юзера - 127.0.0.1
линк - http://document.info/upd.php

имя юзера - admin
ip юзера - 127.0.0.1
линк - http://document.info/del.php

ip юзера - 127.0.0.1
линк - http://document.info/favicon.ico


файл fuction.php


function versiya()
{

$file=fopen("deystvie.txt","r");
if ($file)
{
while(!feof($file))//кртуим файл
{
$str = fgets($file);

if (preg_match("@http:\/\/document\.info\/([a-z])\.php@",$str))
{
echo "найдены";
}

}
fclose ($file);}

}

versiya();


Требуется проверять урлы чтобы был сначала адрес сайта, затем любая последодвательность латинских букв до 10 символов, затем точка, и за ней расширение php

REBUUS
14.10.2009, 21:49
preg_match("/\@http\:\/\/site\.ru\/([a-z]{10})\.php\@/",$str,$matches)
так попробуй

crazy~driver
14.10.2009, 22:06
preg_match("/\@http\:\/\/site\.ru\/([a-z]{10})\.php\@/",$str,$matches)
так попробуй


не все равно не ищет
у мя тока работает
(preg_match("@http://document.info/[a-z].@",$str))
а как добавляю php сразу результат тухнет

krypt3r
14.10.2009, 22:19
@^http://[a-z0-9-]+\.(ru|net|com|org|info)/[a-z]{10}\.php$@

Список доменных имен верхнего уровня можете расширить на свое усмотрение либо замените его на [a-z]+

L I G A
14.10.2009, 22:20
crazy~driver
preg_match('|http://.+/(.+)\.php|Ui',$str,$code);
print_r($code[1]);

L I G A
14.10.2009, 22:22
слэши тоже нужно екранировать, тоесть:
preg_match("@http:\/\/site\.ru\/([a-z]{10})\.php@",$str,$matches);
print_r($matches);

а понту с того ведь у тебя не стоит:
"/http:\/\/site\.ru\/([a-z]{10})\.php/"

Insane bboy
22.10.2009, 01:04
помогите с регуляркой:(
в тексте каждый параграф я отделил с помощью коментов <!--1-->тут ячейка таблицы с текстом и тд итд<!--1_--><--2-->тут другая ячейка с текстом<!--2-->

тескта в ячейках много, как можно загнать параграф в переменую то есть от <!--чифра-->до<!--цифра_--> включай и эти теги каментов?
пробывал так
if(preg_match('#<!--1-->(.*?)<!--1_-->#',$info,$matches))
но что то нифига не помогает:(

alwex
24.10.2009, 15:33
здраствуйте форумчани, помогите, а то я уже полностю задолбался...

есть строка

<!-- актеры фильма -->
<td style="background: url(/images/bg-lenta.gif) no-repeat 0px 95%; width: 260px; height: 100%; vertical-align: top">
<table style="width: 100%; height: 100%; border: none" cellspacing=0 cellpadding=0>
<tr><td style="height: 31px; text-align: right; border: none; padding-right: 10px"><span style="color: #f60">В главных ролях:</span></td></tr>
<tr><td style="height: 10px"><br /></td></tr>
<tr><td style="height: 100%; vertical-align: top; padding-right:10px">
<table style="width: 100%; border: none" cellspacing="0" cellpadding="0">
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/6317/" class="all">Пол Уокер</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/11437/" class="all">Вин Дизель</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/2318/" class="all">Мишель Родригес</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/47679/" class="all">Джордана Брюстер</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/29366/" class="all">Рик Юн</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/22695/" class="all">Чэд Линдберг</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/47429/" class="all">Джонни Стронг</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/16059/" class="all">Мэтт Шульце</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/532/" class="all">Тед Левайн</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/12801/" class="all">Джа Рул</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/19/film/666/" class="all">...</a></td></tr>

<tr><td><br><br><br></td></tr>
<tr><td align="right" class="desc-title" style="border:0px;padding:0px">Роли дублировали:</td></tr>
<tr><td><br></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/1806292/" class="all">Дмитрий Кошмин</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/1053232/" class="all">Алексей Мясников</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/1672422/" class="all">Татьяна Весёлкина</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/1650216/" class="all">Елена Ивасишина</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/224608/" class="all">Борис Шувалов</a></td></tr>
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/19/film/666/" class="all">...</a></td></tr>

</table>
</td></tr>
</table>
</td></tr>
<!-- /актеры фильма -->

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

L I G A
24.10.2009, 15:49
2 alwex
<?php
preg_match('#<a href="/level/4/people/[1-9]{1,5}/" class="all">(.*[а-яА-Я]+)</a></td></tr>#Ui',$str,$code) ;
print_r($code[1]);
?>

alwex
24.10.2009, 15:54
хех, я же сказал что так как ты ща вот сделал будет брать и тех кто дублировал... надо ТОЛЬКО АКТЕРОВ

L I G A
24.10.2009, 15:55
хех, я же сказал что так как ты ща вот сделал будет брать и тех кто дублировал... надо ТОЛЬКО АКТЕРОВ
ты хорошо подумал?

alwex
24.10.2009, 16:20
я проверил твоё, не пашет как надо, парсит все ссылки... даже не только актеров

krypt3r
24.10.2009, 17:22
preg_match ('/В главных ролях:(.+?)Роли дублировали:/s', $page, $m);
preg_match_all ('/<a\s+href="\/level\/\d+\/people\/\d+\/".+?>(.+?)<\/a>/', $m[1], $m);
print_r ($m[1]);

alwex
24.10.2009, 19:26
спс, заработало)

rushter
24.10.2009, 20:31
Подскажите mod_rewrite,чтобы при 404 был редирект на Index

qW1zer
24.10.2009, 20:32
rushter
Вариант не через мод_реврайт,а через редактирование файла ошибки!Если есть доступ,просто можно в нем сделать редирект!Извини что не по теме,просто как вариант предложил!

Pashkela
24.10.2009, 20:33
ErrorDocument 404 /index.php

mailbrush
24.10.2009, 20:34
Обязательно mod_rewrite? Можно просто:
ErrorDocument 404 /index.php

rushter
24.10.2009, 21:00
Обязательно mod_rewrite?
да

krypt3r
24.10.2009, 23:47
RewriteRule ^.*$ /index.php [L,QSA]

GenTao
26.10.2009, 03:11
<tr bgcolor="#FFF8E7">

<td valign='top' colspan="1"><img src='images/question.gif' height='18' width='66'><br>
&nbsp; &nbsp; &nbsp; Что вы хотите?<br>&nbsp;</td>
</tr>


Как спарсить вопрос *Что вы хотите?* Перепробовал уже всё,даже сокращал...бесполезно.Испол ьзовал в качестве ограничителей |

GenTao
26.10.2009, 04:25
Пасип,а если это на рнр/нтмл странице встречается среди другого англо-русского ? Можно применить этот шаблон ?

Dark_Scorpicore
01.11.2009, 18:11
Здраствуйте, проблема такая:
есть регесп для нахождения чисел на странице [0-9]+, но на странице не всегда будут только числа, возможно еще и числа со словами, поэтому нужно дополнить шаблон поиска, чтобы было, например, так
"/[0-9]+ИЛИ[0-9]+[a-zA-ZА-Яа-я]/i"
Как мне вот это самое "ИЛИ" записать?
Спасибо

L I G A
01.11.2009, 18:15
it's - |

Dark_Scorpicore
01.11.2009, 18:26
L I G A, низкий Вам поклон за помощь. :)
Ловите плюсик к репе)

LStr1ke
02.11.2009, 16:58
есть файл в нем исходный код страницы, в нем есть строка "asdasmd,as.dmas.,dma Path=nijniy text asdajdklsjdkalda" мне нужно взять только nijniy text
Спс

m0Hze
02.11.2009, 16:59
есть файл в нем исходный код страницы, в нем есть строка "asdasmd,as.dmas.,dma Path=nijniy text asdajdklsjdkalda" мне нужно взять только nijniy text
Спс
asdasmd,as.dmas.,dma Path=nijniy text asdajdklsjdkalda"
Даже мя извращенная фантазия,не может придумать,что это может быть.Такое отпарсить дстаточно сложно.Покажи пример,а не случайно на тыканые клавиши.

LStr1ke
02.11.2009, 17:04
$resurce="
Text Privet Bla Bla Bla
Masha=Pasha;Petya=durak;Path=/Session/85421-2jT7ZUIA6axKZm9gK2Qu-jizencw

TyT HTML Text =)"
Вот мне нужно парсить /Session/85421-2jT7ZUIA6axKZm9gK2Qu-jizencw =\

m0Hze
02.11.2009, 17:05
Кукисы чтоле? омфг.

preg_match('#Path=(.*);#isU',$text,$match);

LStr1ke
02.11.2009, 17:09
Спасибо огромное )
; - Не нужно было, заменил на \n все окей )))
Спасибо

Gin
02.11.2009, 17:38
Помогите с регуляркой.
Нужно в ХТМЛ документе убрать все теги в том числе и ява скрипты strip_tags не подходит т.к. удаляет только теги начала и конца ява скрипта а не то что внутри него.
Спасибо.

m0Hze
02.11.2009, 17:50
$text = '<ololo><title>Hello<br>llbotyaebalvrot<html>';
$replace = preg_replace('#<(.*)>#isU', '', $text);
echo $replace

Что-то вроде?

Shadow_p1raT
02.11.2009, 18:12
m0Hze,прочитай внимательно его пост.
Gin держи

<?php
function strip_javascript($filter) {
$filter = preg_replace("/<script.*>.*<\/script>/iUs", "", $filter);
return $filter;
}
?>

Сначалa обработаешь этой функцией а потом уже strip_tags();

LStr1ke
02.11.2009, 20:09
ЗДраствуйте еще раз к вам за помощью
Есть текст.
в нем встречаются такие бяки

текст текст текст текст текст текст текст текст
текст текст текст текст текст текст текст текст
<td >
<a href='goTo'>username@mail.ru</a>
</td>
<td align="RIGHT">
<a href='goTo'>77.220.77.220</a>
</td>
<td >
<a href='goTo'>username2@mail2.ru</a>
</td>
<td align="RIGHT">
<a href='goTo'>74.2250.717.2220</a>
</td>
текст текст текст текст текст текст текст
текст текст текст текст текст текст текст


Собственно мне нужно взять только мыла? )) хелп плииииз )

Martyr
02.11.2009, 20:13
(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})

Pashkela
02.11.2009, 20:18
<pre>
<?php
$text = "
текст текст текст текст текст текст текст текст
текст текст текст текст текст текст текст текст
<td >
<a href='goTo'>username@mail.ru</a>
</td>
<a href='goTo'>77.220.77.220</a>
</td>
<td >
<a href='goTo'>username2@mail2.ru</a>
</td>
<a href='goTo'>74.2250.717.2220</a>
</td>
текст текст текст текст текст текст текст
текст текст текст текст текст текст текст";
preg_match_all('/[\w\-]+@[\w\-]+.\w+.\w+/', $text, $out);
print_r($out);
?>
</pre>

mr.The
02.11.2009, 21:31
есть
<input type='text' name='n1' value=''>
<input type='text' name='n2' value='123'>
<input type='text' name="n3">
нужно вытащить именна\значения полей.
делаю
<input.*name=[/\"/'](.+)[/\"/'].*(value=[/\"/'](.+)[/\"/'])*.*>
не вытаскивает значения, если
<input.*name=[/\"/'](.+)[/\"/'].*(value=[/\"/'](.+)[/\"/'])+.*>
то не берёт имена, если нет значения.
втф?