Просмотр полной версии : [Регулярки & Mod_Rewrite] Задай вопрос, получи ответ.
Pashkela
02.11.2009, 21:39
<pre>
<?php
$text = "
<input type='text' name='n1' value='123'>
<input type='text' name='n2' value=''>
<input type='text' name='n3'>
<input type='text' name=\"n3\">
";
preg_match_all("#<input.*name='(.*)'.*value='(.*)'|<input.*name='(.*)'|<input.*name=\"(.*)\"#", $text, $out);
print_r($out);
?>
</pre>
mr.The <?PHP
$text = "
<input type='text' name='n1' value='123'>
<input type='text' name='n2' value=\"asdasd\">
<input type='text' name='n3'>
<input type='text' name=\"n3\">
";
preg_match_all('#<input[^<>]*name=([\'"])(?P<name>[^<>]*?)\1([^<>]*value=([\'"])(?P<value>[^<>\4]*?)\4)?#i',$text,$result,PREG_SET_ORDER);
foreach($result as $one)
{
echo $one['name']."=".$one['value']."<br />\n";
}
?>
Помогите с регуляркой. Нужны все записи вида
<div class="num_comms"><a href="/News/Detail/id/430450/cat/86/">
<img src="/public/upload/news/430450_finance_economy_central_bank_kursyi_valyut. jpg" alt="Новость Newsland: Центробанк повысил курсы доллара и евро" title="Центробанк повысил курсы доллара и евро">
</a>
<div class="num_comms"><a href="/News/Detail/id/430445/cat/86/">
<img src="/public/upload/news/430445_money_economy_regions_byudzhetyi.jpg" alt="Новость Newsland: Может ли регион стать банкротом?" title="Может ли регион стать банкротом?">
</a>
Cо страницы
http://newsland.ru/Index/news/cat/86/ord/1/
Пробую вот такую регулярку
preg_match_all('#<div class="num_comms"><a href="/News/Detail/id/(\d+)/cat/'.$simbol.'/">(\s+)<img src="(.*?)" alt="(.*?)" title="(.*?)">(\s+)</a>#is',$text,$results);
Где переменная $simbol - это номер раздела, который берется из url раздела..
Architek86
04.11.2009, 14:01
Народ, помогите составить регулярку для preg_split (функция php, кто не в курсе).
А именно: есть текст вида абвгде|a\|b\|c|ёжзий|клмн
Надо его разбить в массив по символу |, причём, там, где этот символ экранируется (т.е. \|) надо пропускать и идти далее.. как... хелп, уже второй день никак не получается.
Т.е. если разбить таким способом мой примерный текст, то должно быть так:
0 => абвгде
1 => a\|b\|c
2 => ёжзий
3 => клмн
Может, так?
$a = preg_split ('#(?<!\\\)\|#', $str);
Architek86
04.11.2009, 15:00
krypt3r, спс, работает на ура!
здраствуйте, есть текст:
<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/9144/" class="all">Том Хэнкс</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/8887/" class="all">Робин Райт Пенн</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/3100/" class="all">Гэри Синиз</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/519/" class="all">Майкелти Уильямсон</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/13477/" class="all">Сэлли Филд</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/101656/" class="all">Ребекка Уильямс</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/101657/" class="all">Майкл Коннер Хэмпфри</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/69686/" class="all">Харольд Дж. Хертэм</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/101658/" class="all">Джордж Келли</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/8399/" class="all">Боб Пенни</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/19/film/448/" class="all">...</a></td></tr>
</table>
надо парсить все
<tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/8399/" class="all">Боб Пенни</a></td></tr> но выдерать только все что в <a></a> внутри...
Pashkela
08.11.2009, 20:08
<pre>
<?php
$arr = '<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/9144/" class="all">Том Хэнкс</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/8887/" class="all">Робин Райт Пенн</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/3100/" class="all">Гэри Синиз</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/519/" class="all">Майкелти Уильямсон</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/13477/" class="all">Сэлли Филд</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/101656/" class="all">Ребекка Уильямс</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/101657/" class="all">Майкл Коннер Хэмпфри</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/69686/" class="all">Харольд Дж. Хертэм</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/101658/" class="all">Джордж Келли</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/4/people/8399/" class="all">Боб Пенни</a></td></tr><tr><td style="vertical-align: top; height: 15px" align=right><a href="/level/19/film/448/" class="all">...</a></td></tr>
</table>;';
preg_match_all('#<tr><td.*style.*align=right><a.*href=.*class=.*>(.*)</a></td></tr>#Uis',$arr,$res);
print_r ($res[1]);
?>
</pre>
mailbrush
09.11.2009, 16:57
Задача скрипта - найти в файле hosts.txt ссылку на хост, на котором запущен скрипт, и заменить её на $rstring, и вывести рандумно ссылки, но появилась какая-то загадочная проблема - на локалхосте все отлично работает, а когда залить на хост, то ничего не пашет. В чем может быть проблема?
<?php
$fname = 'hosts.txt';
$rstring = 'hackersite.ru';
$hosts = preg_replace('#<a href="http://www\.' . $_SERVER['HTTP_HOST'] .
'">(.*)</a>#', '<a href="http://www.' . $rstring . '">\1</a>', file($fname));
foreach (array_rand($hosts, count($hosts)) as $id)
echo $hosts[$id] . "|\r\n";
?>
hosts.txt
<a href="http://wwww.google.com">Google</a>
<a href="http://wwww.yandex.ru">Yandex</a>
<a href="http://wwww.yandex.ru">Rambler</a>
<a href="http://wwww.myhost.ru">myhost</a>
Pashkela
09.11.2009, 17:10
$_SERVER['SERVER_NAME']
попробуй
mailbrush
09.11.2009, 17:14
$_SERVER['SERVER_NAME']
попробуй
Не пашет....
Здравствуйте, ув. Знатоки!
Нужно получить все ссылки попарно в виде:
ссылка - якорь
Но есть НО:
Что если поменяются местами или в теле ссылки есть другие теги? Пример:
<a href="http://site.ru/" rel="nofollow">Якорь</a>
<a rel="nofollow" href="http://site.ru/"></a>
<a rel="nofollow" id="ya23" href="http://site.ru/">Якорь</a>
<a rel="nofollow" id="ya23" href="http://site.ru/" style="font: bold;">Якорь</a>
<a rel="nofollow" id="ya23" class="olink" href="http://site.ru/" style="font: bold;">Якорь</a>
Естественно обычный /href="(.*)" >(.*)<\/a>/ не подходит, как будет выглядеть нужный мне запрос?
Заранее благодарен! :)
/.*href="(.*)".*>(.*)<\/a>/isU
.::BARS::.
14.11.2009, 11:11
есть файлы
dehsg1.jpg dehsg2.jpg dehsg3.jpg dehsg4.jpg
как получить имя только dehsg
могут быть и так
ne-+_.hsud1.jpg ne-+_.hsud2.jpg ne-+_.hsud3.jpg
тогда нужно ne-+_.hsud
preg_match ('/(.+)\d+\.jpg$/', $str, $m);
.::BARS::.
15.11.2009, 08:49
не... не то... там не только .jpg
сделал инче.... спасибо...
чисто.расширение
поотом вырезаю исходник - число.расширение= что хотим
<?php
$dir = scandir($_SERVER['DOCUMENT_ROOT']);
foreach ($dir as $file) {
if(is_file($file))
{
$ext = pathinfo($file);
$file = str_replace('.'.$ext['extension'],'',$file);
echo $file.'<br>'; // Вывод файлов без расширения.
} else {
echo $file.'<br>'; // Вывод папок.
}
}
?>
Здравствуйте, ув. Знатоки!
Нужно получить все ссылки попарно в виде:
ссылка - якорь
Но есть НО:
Что если поменяются местами или в теле ссылки есть другие теги? Пример:
<a href="http://site.ru/" rel="nofollow">Якорь</a>
<a rel="nofollow" href="http://site.ru/"></a>
<a rel="nofollow" id="ya23" href="http://site.ru/">Якорь</a>
<a rel="nofollow" id="ya23" href="http://site.ru/" style="font: bold;">Якорь</a>
<a rel="nofollow" id="ya23" class="olink" href="http://site.ru/" style="font: bold;">Якорь</a>
Естественно обычный /href="(.*)" >(.*)<\/a>/ не подходит, как будет выглядеть нужный мне запрос?
Заранее благодарен! :)
if(preg_match_all('#<a[^>]*? href="(.*?)"#',$data,$l))
$links = $l[1];
Димитрий
16.11.2009, 02:11
в общем есть такая проблема.
есть два сайта- движки на VamShop 1.45, файлы .htaccess одинаковые.. файлы manager.php и redirector.php тоже..( отвечающие за переделку урлов)
ЧПУ включено..
на одном все нормально- редирект работает..
но на одном из них есть такая проблема- в поисковике есть страницы вида
product_info.php?info=p3076
и страницы вида index.php?cat они дублируются естесственно с страницами с нормальными ЧПУ...
редирект получается не работает!!!
больше 100 подобных страниц- наверное не надо обьяснять что это жутко вредно для поисковиков..
через .htaccess не получается сделать изменение..
то есть пишу скажем
Redirect 301 /index.php?cat=c226_Biolit.html http://SAITEGGG.ru/index.php/cat/c226_Biolit.html и это не работает...
может дело в том что знак ? в ссылке не понимает? подобное правило но с прямыми ссылками работает..
понятно, что в вамшопе мало кто понимает, но как сделать чтобы редирект работал через .htaccess
__________________
помогите правильно составить регулярку, есть поле
<input type='hidden' id='post_ID' name='post_ID' value='4' />
нужно спарсить значение валуе
BrainDeaD
16.11.2009, 08:11
2 warlok
preg_match_all("#<input.*value='(.*)'#", $text, $out);
что то невыходит, возврашяет пустой массив
BrainDeaD
16.11.2009, 08:49
что то невыходит, возврашяет пустой массивзначит в коде у тебя чтото не то.
вот результат проверки:
Array
(
[0] => <input type='hidden' id='post_ID' name='post_ID' value='4'
[1] => 4
)
вот сам код:
<?PHP
//
$subject = '<input type=\'hidden\' id=\'post_ID\' name=\'post_ID\' value=\'4\' />';
//
$pattern = '#<input.*value='(.*)'#is';
//
$result = preg_match($pattern, $subject, $subpattern);
//
echo '<pre>'.print_r($subpattern, TRUE).'</pre>';
?>
EDIT: результат разумеется в $result, а $subpattern не обязателен, так что можешь его из preg_match удалить, т.е. preg_match($pattern, $subject);
.::BARS::.
17.11.2009, 12:51
<?php
$subject = "<input type='hidden' id='post_ID' name='post_ID' value='123424312' />";
$pattern = "#<input(.*?)value=\'(.*?)\'#is";
$result = preg_match($pattern, $subject, $subpattern);
echo $subpattern[2];
?>
тоже... =)))
помогите правильно составить регулярку, есть поле
<input type='hidden' id='post_ID' name='post_ID' value='4' />
нужно спарсить значение валуе
<?php
$text = "<input type='hidden' id='post_ID' name='post_ID' value='4' />";
preg_match("#<input.*value='(.*)'#", $text, $out);
echo $out[1];
И вот так еще можно:
<?php
$text = "<input type='hidden' id='post_ID' name='post_ID' value='4' />";
preg_match("#<input[^>]*? value='(.*)'#i", $text, $out);
var_dump($out);
?>
как на JS сделать что бы проверяло или есть + вначале текста
Как-то не по-русски у вас фраза звучит. Если я ее правильно понял, то
alert (str.match (/^\++/) ? 'yes' : 'no');
ну типо парсер на проверку телефона. что бы только проверял или есть + впереди
тогда достаточно проверки
alert (str.charAt (0) == '+' ? 'yes' : 'no');
без регулярки
<input type=submit value=' баланс ($0) '></td></form>
Нужно вычленить баланс. С regexp не дружу :(.
BrainDeaD
19.11.2009, 22:41
intNet
смотря в каком виде баланс нужен. ну типа баланс ($0) или просто $0 или само число?
вот для первого варианта:
$text = "<input type=submit value=' баланс ($0) '></td></form>";
preg_match_all("#<input.*value='(.*)'#", $text, $out);
echo $out[1];
тогда достаточно проверки
alert (str.charAt (0) == '+' ? 'yes' : 'no');
без регулярки
cпс
Голова пухнет, сделайте кто нибудь:
+ddd-ddd-ddddddd или +ddd-dd-ddddddd
d-число от 0 до 9
помогите разобраться с ifrаmе
вообщем проблемма такая есть некий сайт .( ну че греха таить ) для зароботка денех
так вот .принцип такой кликаешь по ссылкам смотриш открывшийся сайт 30-40 сек -- те капает монетка.
хочу сразу сказать о взломе речь не пойдет. вопрс в другом
1 . эм как сделать чтоб открывался ток фрейм с счетчиком времени (без самого сайта ...ну или его содержимого .)
** было **
http://pic.ipicture.ru/uploads/091124/CBVaKqMjww.jpg
а сделать что б было ТАК !!
http://pic.ipicture.ru/uploads/091124/thumbs/ciYVCaUtXG.jpg
2 . возможно ли зделать скрипт обнуляющий счетчик ( по типу сриптов для оперы .. что б не ждать на депозите 60 сек.)
кликнул по ссылке открылась страница и счетчик начал отсчет 30...29 ....и сразу ноль....
http://pic.ipicture.ru/uploads/091124/thumbs/F7RIhE3nvY.jpg
исходный код таких страниц примерно такой
<html>
<head>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
<title>адрес сайта ( работодателя) - Система Активной Рекламы</title>
<frameset rows="31,25,*">
<frame marginwidth="0" marginheight="0" name="frminfo" scrolling="no" noresize src="vls.php">
<frame name="frmads" noresize scrolling="no" marginwidth="0" marginheight="0" src="vfa.php">
<frame name="frmsite" src="адрес рекламируемого сайта">
</frameset>
</head>
</html>
если кто поможен дельным советом ,скриптом ( от меня благодарность виде вмз на кошель- телефон )
Голова пухнет, сделайте кто нибудь:
+ddd-ddd-ddddddd или +ddd-dd-ddddddd
d-число от 0 до 9
preg_match_all('#(\+[0-9]{3}[\-][0-9]{2,3}[\-][0-9]{7})#', $text, $matches);
не "рационально", но работает :)
help :)
<td style="text-align:center">value1</td><td style="text-align:center">blabla</td> <td style="text-align:center">value2</td>
нужно вытащить value1,2 и записать в файл:
value1
value2
Pashkela
26.11.2009, 18:43
<pre>
<?php
$a = '<td style="text-align:center">value1</td><td style="text-align:center">blabla</td> <td style="text-align:center">value2</td>
<td style="text-align:center">value3</td><td style="text-align:center">blabla</td> <td style="text-align:center">value4</td>';
preg_match_all('|<td style="text-align:center">(.*)</td><td style="text-align:center">.*</td>.*<td style="text-align:center">(.*)</td>|',$a,$b);
print_r ($b); # Закоментируй, если не нужен вывод на экран
$c = fopen("123.txt","w");
for ($i = 0; $i < count($b[1]); $i++) {
fwrite ($c, $b[1][$i] . "\r\n" . $b[2][$i] . "\r\n");
}
fclose ($c);
?>
</pre>
Что делать ? Геморройная ссылка мне попалась:
<a href="http://www.siteru/login.php?a=log&u=1881654&i=150305" target="_blank">http://www.site.ru/login.php?a=log&u=1881654&i=105305</a>
Прогнал через прег мач алл по тегу а href,но там вылезло ппц ссылок...Потом пытался сохранить часть ссылки после login.php - тоже ничего не вышло.Скрипт должен был в фаил записывать...
ЗЫ: Цель - сохранить
a=log&u=1881654&i=105305 - и ничего более.
Pashkela
26.11.2009, 20:25
что записывать? Перечитай свой вопрос и поправь пост
Pashkela
26.11.2009, 20:35
<pre>
<?php
$a = '<a href="http://www.siteru/login.php?a=log&u=1881654&i=150305" target="_blank">http://www.site.ru/login.php?a=log&u=1881654&i=105305</a>
<a href="http://www.siteru/login.php?a=log&u=1881655&i=150306" target="_blank">http://www.site.ru/login.php?a=log&u=1881655&i=105306</a>';
preg_match_all('|<a href=".*\?(.*)".*target="_blank">.*;i=.*</a>|',$a,$b);
print_r ($b[1]);
?>
</pre>
Проблема решена:).Спасибо,Pashkela:)
Народ как сделать так , что бы из строки удалялось все кроме цифр ?
Например есть строка 30пра40().5. нужно что бы осталось только 30405
$str = "30пра40().5.";
$str = preg_replace('#[^0-9]#','', $str);
echo $str;
Нужно составить регулярку, чтобы спарсить все IP адреса с файла. Подскажите пожалуйста
preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/")
Совсем елементарная) можно добавить и {1,3} ну и .д.,но для парса подойдет.
preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/")
Совсем елементарная) можно добавить и {1,3} ну и .д.,но для парса подойдет.
Твое регулярное выражение не корректно потому что оно найдет Айпишку даже такого вида 999.999.999.999, а максимально может быть 255.255.255.255
http://regexlib.com/Search.aspx?k=IP+address&c=-1&m=-1&ps=20
тут есть несколько примеров regexp
Pashkela
29.11.2009, 00:46
Твое регулярное выражение не корректно потому что оно найдет Айпишку даже такого вида 999.999.999.999,
и что дальше? Много таких ""некорректных" ip-шек в файлах для парсинга встречал? Или вообще где-нибудь, где надо IP отпарсить? Я - ни разу. А если есть - никаких проблем. В прямом смысле. Без продолжения
PS: Заманали теоретики
PS: Заманали теоретики
Пиши дальше гавно, и утешай себя оправданиями.
и что дальше? Много таких ""некорректных" ip-шек в файлах для парсинга встречал? Или вообще где-нибудь, где надо IP отпарсить? Я - ни разу. А если есть - никаких проблем. В прямом смысле. Без продолжения
PS: Заманали теоретики
Зачем гавно плодить,которое хоть и редко ,но иногда может спарсить нето ? Более правильное решение всегда лучше.
Pashkela
29.11.2009, 02:33
[del]
кидис, уссался над твоим блогом. Гордись дальше, пока я не подумал вдруг залить тебе шелл, недоделок
Неадеват. У меня нет блога, хацкер. Да и вообще если делают замечание лучше к нему прислушаться, а не нести чушь, эти посты не только мы читаем, новичек возмет с тебя пример и нагавнокодит.
st_megabit
29.11.2009, 13:44
Привет ачат. Есть такой вопросик. Можно ли с помощью mod_rewrite преобразовать URL вида www.name.ru/page.php?company=companyname&page=pagename
к виду companyname.name.ru/pagename??? Если да то как... Заранее благодарен за комментарии.
-Hormold-
29.11.2009, 15:56
Так очень нужна помощь...
Есть текст, в нём бывает - "1612 год", "в 2008 году", "1753 года"... (т.е. с разными окончаниями).
Нужно выдрать все НО БЕЗ "[[" (до числа) и "]]" (после окончания) и заменить на "[[... год..]]"..
Буду очень благодарен!
Deathdreams
29.11.2009, 16:36
2-Hormold-
Кинь кусок или пример текста, чтобы было понятней...
-Hormold-
29.11.2009, 16:58
и выпущенная в России компанией Новый диск 4 августа 2009 года на PC.
В этом тексте надо заменить "2009 года" на "[[2009 год]]а"
$str = preg_replace ('/(\d{4} год)/', '[[$1]]', $str);
?
-Hormold-
29.11.2009, 17:39
Не работает что-то... Нужно что бы было с пробелом до и после.и небыло [[ и ]] (до и после)
-Hormold-
29.11.2009, 18:41
Вот остался только один вопрос, как не сделать что бы он брал только без [[ в начале или ]] в конце?..
у меня получается так:
[[2012 год]]у превращается в [[[[2012 год]]]]у
Попробуйте либо так
$str = preg_replace ('/\[?\[?(\d{4} год)\]?\]?/', '[[$1]]', $str);
либо так
$str = preg_replace ('/(?<!\[\[)(\d{4} год)(?!\]\])/', '[[$1]]', $str);
SultanOFF
29.11.2009, 20:10
имеются файлы картинок с названиями xxx.png, yyy.bmp, ggg.gif и т.д. тоесть с различными расширениями. Делаю регулярку вот такую '(.+?)\.([a-zA-Z]{3})' работать работает :), но вот если у картинки будет название что то в стиле xxx.yyydsd.png то получается совсем не то что ожидалось. Можно в принципе для каждого расширения отдельную регулярку делать, но так дело не пойдет, можно ли в одну регулярку это все уместить?
/[a-z0-9\.]+\.[a-z]{3}/i
/(?:[a-z0-9]+\.)+[a-z]{3}/i
SultanOFF
29.11.2009, 20:43
/[a-z0-9\.]+\.[a-z]{3}/i из названия angry&hungres.png выдало только букву s а второе вообще сообщило об ошибке :(
ПС: пишу на delphi
/[a-z0-9\.&]+\.[a-z]{3}/i
SultanOFF
29.11.2009, 21:52
нифига не работает, если даже файл 1123566.jpg выдает лишь 6 :(
ну читайте тогда маны по регэкспам в делфи
сделайте из /index.php?id=111 в /id111 =\
$str = "/index.php?id=111";
$str = preg_replace('#[^0-9]#','', $str);
echo "/id".$str;
вроде так.
$str = "/index.php?id=111";
$str = preg_replace('#[^0-9]#','', $str);
echo "/id".$str;
вроде так.
не пашет :(
$str = "/index.php?id=111";
$str = preg_replace('#[^0-9]#','', $str);
echo "/id".$str;
не пашет :(
Пашет :)
Но эта регулярка будет оставлять только цифры из входящей $str.
-
Как вариант:
<?php
$str = "/index.php?id=1111111params";
preg_match('#/index.php\?id=([a-z0-9]+)#i',$str, $out);
echo "/id".$out[1];
?>
Будет собирать цифры и буквы
programming
30.11.2009, 12:05
Никак не могу разобраться как составить рег. выражение, чтобы выдернуть в массив все страны, а также ссылки на них с этого сайта: http://www.ozon.travel/countries/
Помогите пожалуйста..
Ну или хотя бы просто названия стран..
Уж куда проще
preg_match_all ('/<a href="(\d+\/)">(.+?)<\/a>/', $str, $m);
<tr><td colspan=3 style="padding: 10px 10px 20px 20px" class="news">
<span class="_reachbanner_">Влюбиться в вампира страшно и романтично. Но потерять любимого, решившего ценой разрыва спасти свою девушку от роли пешки в вечном противостоянии кланов «ночных охотников», это просто невыносимо. Белла Свон мучительно переживает исчезновение Эдварда и безуспешно ищет забвения в дружбе с мальчишкой-индейцем Джейкобом Блэком. Она даже не подозревает, что её лучший друг порождение ещё одного «народа Тьмы». Народа, куда более жестокого и опасного, чем аристократы-вампиры
</span>
</td></tr>
есть текст такого вида (выше) и надо парсить всё что внутри<span>..</span>
НО там с новой строчки <span>
В регулярке Uis
<?php
$str = '
<tr><td colspan=3 style="padding: 10px 10px 20px 20px" class="news">
<span class="_reachbanner_">Влюбиться в вампира — страшно и романтично. Но потерять любимого, решившего ценой разрыва спасти свою девушку от роли пешки в вечном противостоянии кланов «ночных охотников», — это просто невыносимо. Белла Свон мучительно переживает исчезновение Эдварда и безуспешно ищет забвения в дружбе с мальчишкой-индейцем Джейкобом Блэком. Она даже не подозревает, что её лучший друг — порождение ещё одного «народа Тьмы». Народа, куда более жестокого и опасного, чем аристократы-вампиры…</span>
</td></tr>
';
if(preg_match('#<span.*>(.*)</span>#Uis',$str,$m))
echo $m[1];
?>
пробовал я так, на той странице есть такого текста с span class="_reachbanner_" кучу потому надо что бы по всему шабу как-то...
а как я буду знать именно тот? понимаешь тут же может изменяться... надо хороший шаб
Неужели так тяжело включить мозги и дать ВСЮ страницу и сказать какой именно момент нужно отпарсить, чтоб не растягивать на несколько страниц вытягивая с тебя по одному слову что тебе нужно.
programming
30.11.2009, 19:00
Уж куда проще
preg_match_all ('/<a href="(\d+\/)">(.+?)<\/a>/', $str, $m);
Спасибо. Ссылки достаются, а как достать названия стран?
Туго у меня идут эти регэкспы.. никак не могу разобраться..
Вот ещё вопрос: почему в preg_match_all ('/<a href="(\d+\/)">(.+?)<\/a>/', $str, $m); выдирается именно ссылка, а не название?
И рег выражения могут выдирать русские буквы?
Вот ещё вопрос: почему в preg_match_all ('/<a href="(\d+\/)">(.+?)<\/a>/', $str, $m); выдирается именно ссылка, а не название?
Выдирается тут все, разберем регулярку:
preg_match_all ('/<a href="(\d+\/)">(.+?)<\/a>/', $str, $m);
В $m[0] будут находится все ссылки с HTML тегами, в $m[1]; будут находится первые вхождения заключенные в фигурные скобки, тоесть все что подходит под (\d+\/) в нашем выражении, ну и в $m[2]; будет все что попадает под (.+?)
Вообщем после регулярки напиши print_r($m); и сам все увидиш.
И рег выражения могут выдирать русские буквы?
Есесно '#[а-я]#i'
programming
30.11.2009, 21:32
Выдирается тут все, разберем регулярку:
preg_match_all ('/<a href="(\d+\/)">(.+?)<\/a>/', $str, $m);
В $m[0] будут находится все ссылки с HTML тегами, в $m[1]; будут находится первые вхождения заключенные в фигурные скобки, тоесть все что подходит под (\d+\/) в нашем выражении, ну и в $m[2]; будет все что попадает под (.+?)
Вообщем после регулярки напиши print_r($m); и сам все увидиш.
Есесно '#[а-я]#i'
Спасибо.
Вот ещё проблема..
С http://www.ozon.travel/countries/16644/ нужно выдернуть код страны. Как составить рег выражение?
Составлял так:
preg_match_all('/Код страны:<\/strong>(.*)<\/p>/',$out1, $regs1);
programming
По идее, как ты составил должен выплевывать тебе символ новой строки + 3 табуляции.
Там довольно редко стречается табуляция так что можно зацепиться за нее (Вообще можно просто искать по маске \+\d+ но не факт, что на странице не будет чего-то вроде +0, что не является кодом страны). Так что получается что-то вроде:
\t\t\t(\+\d+)</p>
programming
30.11.2009, 22:31
programming
По идее, как ты составил должен выплевывать тебе символ новой строки + 3 табуляции.
Там довольно редко стречается табуляция так что можно зацепиться за нее (Вообще можно просто искать по маске \+\d+ но не факт, что на странице не будет чего-то вроде +0, что не является кодом страны). Так что получается что-то вроде:
\t\t\t(\+\d+)</p>
Спасибо. Разобрался как выдергивать такие вещи.
Появилась ещё большая проблема. Есть допустим http://www.ozon.travel/countries/1727/ и http://www.ozon.travel/countries/6675/ , а также остальные страны с http://www.ozon.travel/countries/.
Каким образом возможно выдернуть описание с этих страниц? То есть, чтобы шаблон рег выражения подходил ко всем страницам стран. Выдернуть нужно только основное описание, то есть перелёты и т.д. не нужно..
Возможно ли такое осуществить?
programming
По регулярке собираешь id всех страниц, затем перебирая их открываешь страницу http://www.ozon.travel/countries/{{ id }}/ и выдергиваешь оттуда описание.
Id стран можно искать на странице http://www.ozon.travel/countries/ по регулярке:
<li><a href="(\d+)/">
Дальше уже ищешь полное описание и записываешь, допустим, для каждой страны в свой файл.
programming
01.12.2009, 17:05
Это всё само собой понятно. Проблема вытащить само описание, а точнее составить регулярку, которая подходила бы ко всем странам.
Ну смотри в исходнике страницы за что можно зацепиться. Перед самим контентом можно зацепиться за класс breadcrumb, после контента за класс футера.
Спасибо. Разобрался как выдергивать такие вещи.
Появилась ещё большая проблема. Есть допустим http://www.ozon.travel/countries/1727/ и http://www.ozon.travel/countries/6675/ , а также остальные страны с http://www.ozon.travel/countries/.
Каким образом возможно выдернуть описание с этих страниц? То есть, чтобы шаблон рег выражения подходил ко всем страницам стран. Выдернуть нужно только основное описание, то есть перелёты и т.д. не нужно..
Возможно ли такое осуществить?
<?php
ini_set('max_execution_time','0');
get_countries_info('http://www.ozon.travel/countries/1727/');
function get_countries_info($url)
{
$fp = file_get_contents($url);
if(preg_match_all('#<p><strong>(.*): </strong>(.*)</p>#U', $fp, $m))
{
foreach ($m[0] as $str) {
echo strip_tags($str).'<br>';
}
}
if(preg_match_all('#</p><p><b>(.*)</b>(.*?)</p><h1>#', $fp, $m))
echo strip_tags($m[0][0]);
}
?>
Выводит:
Столица: Копенгаген (Copenhagen) Ольборг (Alborg), Оденсе (Odense).
Разница во времени: отстает на 2 часа
Денежная единица: Датская крона/DKK, 1 EUR = ~7.4 DKK
Виза: нужна Шенгенская виза, стоимость визы 40 EUR
Цена за ужин: 25 EUR
Чаевые: в Дании не принято давать чаевые
Аренда машины: от 70 EUR
Государственный язык: датский
Население: 5200000
Дания — это маленькая страна, имеющая красивую природу и богатую историю. Вот уже более тысячи лет Данией правят короли и королевы. Дания состоит из 406 островов и имеет береговую линию протяженностью 4 800 километров, состоящую из песчаных пляжей, омываемых чистой и прозрачной морской водой. Площадь страны — 43 093 кв.км, не включая Гренландию и Фарерские острова, которые пользуются внутренней автономией.
ЗЫ Функция выводит все в UTF-8 поетому если будеш использовать повставляй iconv() в нужных местах.
programming
01.12.2009, 19:53
Всё-таки то, что хочу я, наверное, невозможно реализовать..
В случае с Данией действительно вырывается всё отлично.
#</p><p><b>(.*)</b>(.*?)</p><h1># но что если в описании страны нет жирного шрифта?? В некоторых случаях он вообще не выдёргивает, в некоторых выдёргивает один абзац из нескольких, в котором есть жирный шрифт.
В общем бред с этой задачей..
Как я заметил на всех страницах стиль оформления один, кинь мне несколько УРЛов где оформления разные, позже гляну.
programming
01.12.2009, 20:11
http://www.ozon.travel/countries/590/
http://www.ozon.travel/countries/605/
programming
02.12.2009, 19:53
В общем не могу придумать что делать с выдиранием описания..
А что если вырвать полное описание, а не первые абзацы? Например, на http://www.ozon.travel/countries/1032/ с Чем заняться путешественнику в Венгрии? Подлечиться-оздоровиться на термальных курортах, оценить далеко не бедную местную историческую «экскурсионку», а и до самого конца. Какую регулярку тогда составить?
Проблему уже сам решил.
SultanOFF
03.12.2009, 18:54
имеется html код
<p><h1>Заголовок</h1></p>
<p>описание</p>
<p>
нужно выдрать заголовок и описание! Делаю вот так
'</h1></p><p>(.*?)<\/p><p>'; нифига не работает! делаю в делфи
SultanOFF
Можешь выдирать отдельно или одной регуляркой.
По отдельности:
Заголовок - '<h1>(.*?)</h1>'
Описание - '</h1></p>\n<p>(.*?)</p>'
У тебя в регулярке для описания не хватает символа новой строки (eol).
Если одной регуляркой, то:
'<h1>(.*?)</h1></p>\n<p>(.*?)</p>'
SultanOFF
03.12.2009, 19:34
спасибо, теперь работает :)
programming
03.12.2009, 20:37
Есть переменная. В ней html код. Нужно выдрать из него все ссылки. Но текст ссылки оставить.
Как такое реализовать?
Вопрос не ясен, как ето "выдрать", если нужны только ссылки, тоесть то что находится в href='' то вот регулярка
'#<a[^>]*? href="(.*?)"#'
Или тебе нужно preg_replace сделать, и удалить все что в href но оставив <a>ссылку</a> ?
programming
03.12.2009, 21:27
Вопрос не ясен, как ето "выдрать", если нужны только ссылки, тоесть то что находится в href='' то вот регулярка
Или тебе нужно preg_replace сделать, и удалить все что в href но оставив <a>ссылку</a> ?
Нужно просто убрать тег:
было: <a href="ссылка">Текст</a>
стало: Текст
<?php
$fp = file_get_contents('http://mail.ru/');
if(preg_match_all('#<a.*>(.*)</a>#',$fp, $matches))
{
foreach ($matches[1] as $link) {
echo $link.'<br>';
}
}
?>
programming
04.12.2009, 22:21
Нужно переменную полностью оставить, а только лишь удалить тег <a href..></a>
А с помощью strip_tags() можно удалить только тег ссылки, а все другие оставить?
Не знаю, как в PHP, но в Python это делается так:
import re
print re.sub('<a href=".+">(?P<text>.*?)</a>', '\g<text>', 'Hello, World! <a href="gasgasg">Text</a> HAHA!')
Получаем следующее:
Hello, World! Text HAHA!
Есть список доменов, в файле.
Нужно зону домену в виде:
.com
.es
Таблица такая:
sdfsdf.com
sdfsdfff.com
loool.es
asdsdf.es
Нужно чтобы получилось:
sdfsdf.com .com
sdfsdfff.com .com
loool.es .es
asdsdf.es .es
Т.е. дописывать через несколько пробелов зону домена. Спасибо :)
Читаешь файл полностью, а затем заменяешь по ругулярке. У меня на Python получилось так:
import re
re.sub('(?P<domain>.*?)(?P<zone>\.\w+)\n', '\g<domain>\g<zone> \g<zone>\n', text)
Здесь <domain> - все что до .es, а <zone> - как раз .es.
Вполне вероятно, что можно сделать лучше :)
Нужно переменную полностью оставить, а только лишь удалить тег <a href..></a>
А с помощью strip_tags() можно удалить только тег ссылки, а все другие оставить?
<?php
$str = '<a href="url" target="_blank" name="userurl">desc</a>';
echo preg_replace('#<a.*>(.*)</a>#','$1',$str);
?>
Насчет strip_tags()
можно удалить только тег ссылки, а все другие оставить?
Можно но наоборот, удалить все теги кроме тех которые в :
string strip_tags ( string $str [, string $allowable_tags ] )
$allowable_tags
Пример:
<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";
// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>
Результат:
Test paragraph. Other text <p>Test paragraph.</p> <a href="#fragment">Other text</a>
ЗЫ вообще все ето можно найти на php.net
Имеються html файлы.
http://site.ru/hh-html.html
http://site.ru/zz-ggsdas.html
http://site.ru/zz-ggsdas.html
Как сделать ссылки вида:
http://site.ru/hh/html.html
http://site.ru/zz/html.html ?
rushter, это опечатался, или везде должно быть html.html? Если да, то вот на python:
import re
i = '''http://site.ru/hh-html.html
http://site.ru/zz-ggsdas.html
http://site.ru/zz-ggsdas.html'''
print re.sub('(?P<pre>\w{2})-.+\.html', '\g<pre>/html.html', i)
Результат:
http://site.ru/hh/html.html
http://site.ru/zz/html.html
http://site.ru/zz/html.html
Если все-же нужно получить такое же имя файла, то:
import re
i = '''http://site.ru/hh-html.html
http://site.ru/zz-ggsdas.html
http://site.ru/zz-ggsdas.html'''
print re.sub('(?P<pre>\w{2})-(?P<name>.+)\.html', '\g<pre>/\g<name>.html', i)
Результат:
http://site.ru/hh/html.html
http://site.ru/zz/ggsdas.html
http://site.ru/zz/ggsdas.html
А вообще это смотреть нужно. Например, если тебе нужно то же имя файла, что и было и при этом дефис больше нигде не встречается, то можно просто по тексту заменить:
print i.replace('-', '/')
И вот что выйдет:
http://site.ru/hh/html.html
http://site.ru/zz/ggsdas.html
http://site.ru/zz/ggsdas.html
rushter, это опечатался, или везде должно быть html.html? Если да, то вот на python:
import re
i = '''http://site.ru/hh-html.html
http://site.ru/zz-ggsdas.html
http://site.ru/zz-ggsdas.html'''
print re.sub('(?P<pre>\w{2})-.+\.html', '\g<pre>/html.html', i)
Результат:
Если все-же нужно получить такое же имя файла, то:
import re
i = '''http://site.ru/hh-html.html
http://site.ru/zz-ggsdas.html
http://site.ru/zz-ggsdas.html'''
print re.sub('(?P<pre>\w{2})-(?P<name>.+)\.html', '\g<pre>/\g<name>.html', i)
Результат:
А вообще это смотреть нужно. Например, если тебе нужно то же имя файла, что и было и при этом дефис больше нигде не встречается, то можно просто по тексту заменить:
print i.replace('-', '/')
И вот что выйдет:
Ну как бы регулярки я и сам могу составить,мне нужно правило для mod_rewrite.
ggsdas - динамическое.
У меня есть куча html файлов с такими именами,мне нужно сделать вид как будто они в папках.
rushter, из вашего поста не было ясно, что нужно помочь с правилом для mod_rewrite
RewriteRule ^(.+)/(.+)\.html$ $1-$2.html
programming
06.12.2009, 17:14
Как составить регулярку для выдирания названия и ссылки стран с http://www.ozon.travel/visas/ ?
Не понимаю за что зацепиться..
Здравствуйте, ув. Античатовцы!
WP установлен в: /news/
Есть файл: page-1.html
Есть страница WP: /news/pages/page-1
Задача при запросе страницы page-1.html получать страницу /news/pages/page-1 с использованием ModRewrite (.htaccess).
В .htaccess файле пишу вот так:
RewriteEngine On
RewriteRule ^page-1.html$ /news/pages/page-1
В ответ при запросе страницы page-1.html получаю 404 страницу WP.
В чём проблема? Что делаю не так? :confused:
Заранее благодарен! ;)
programming, как-то так:
'<li><a href="(/visas/.*?)">(.*?)</a></li>'
А вообще лучше самому учиться :)
Здравствуйте, ув. Нульдяне!
делай редирект не на страницу /news/pages/page-1
а на index.php?p=xxxxxxx где номер этой страницы, в твоем случае наверно это 1 поэтому будет
RewriteRule ^page-1.html$ /news/index.php?p=1
делай редирект не на страницу /news/pages/page-1
а на index.php?p=xxxxxxx где номер этой страницы, в твоем случае наверно это 1 поэтому будет
RewriteRule ^page-1.html$ /news/index.php?p=1
У меня имено страница, а не запись в WP. Что в этом случае?
У меня имено страница, а не запись в WP. Что в этом случае?
Есть файл: page-1.html
Есть страница WP: /news/pages/page-1
что я тут не верно понял , я так понял у тебя в папку news установлен wp, pages/page-1 такого урла нет в WP значит это рерайтный урл, но на рерайтный.
Ты делаешь редирект на рерайтную страницу, вот поэтому у тя и не работает , то есть у /news/pages/page-1 есть и другой адрес, значит и слать надо на него.
inlanger
08.12.2009, 21:10
Народ, подскажите, как удалить последний символ в строке, если он равен нулю?
Народ, подскажите, как удалить последний символ в строке, если он равен нулю?
<?php
$str = '123eredjkgdg0';
if(substr($str,-1) == 0)
$str = substr($str,1,-1);
echo $str;
?>
inlanger
08.12.2009, 21:41
Мне бы регулярку. Причём для javascript )
astrologer
08.12.2009, 21:47
Мне бы регулярку. Причём для javascript )/0$/
alert('1230'.replace(/0$/, ''));
Хочу удалить строки длина которых меньше 10 строк.
re.sub - замена по рег. выражению.
re.sub('\n.{1,10}\n')',"\n",self.text)
Что не так ?
Так не?
strlen($string) <= 10 ? $string = '' : '' ;
Нет.Под строкой тут понимается одна большая строка и в ней подстроки разделенные переводом строки(\n).Ну т.е обычный текстовый файл со строками в нём.
Нет.Под строкой тут понимается одна большая строка и в ней подстроки разделенные переводом строки(\n).Ну т.е обычный текстовый файл со строками в нём.
Ну так открывай файл через file(); в цикле каждую строку проверяй условием, кот. я привел.
Например:
<?php
$file_arr = file("text.txt");
foreach($file_arr as $line) {
strlen($line) <= 10 ? $line = '' : '' ;
echo $line."<br>";
}
?>
Скрипт выведет текстовый файл исключая сроки меньше или равные 10 симвалам.
в условии можно переделать на проверку условием и записем в файл, тоесть запишется новый файл, где не будет "маленьких" строк.
Возможно есть и более практичный вариант.
PS. Написал на скорую руку, нужно доделать до нормального вывода и вырезания "строки"
Ну так открывай файл через file(); в цикле каждую строку проверяй условием, кот. я привел.
Например:
<?php
$file_arr = file("text.txt");
foreach($file_arr as $line) {
strlen($line) <= 10 ? $line = '' : '' ;
echo $line."<br>";
}
?>
Скрипт выведет текстовый файл исключая сроки меньше или равные 10 симвалам.
в условии можно переделать на проверку условием и записем в файл, тоесть запишется новый файл, где не будет "маленьких" строк.
Возможно есть и более практичный вариант.
PS. Написал на скорую руку, нужно доделать до нормального вывода и вырезания "строки"
Твой код очень долго будет обрабатывать текст,регулярка будет работать как минимум в 5 раз быстрее.Разбивать фаил весов 15мб и потом его обходить foreach не есть хорошо.
Вообще с трудом понял суть проблемы, а что если считать файл побайтово в переменную, далее переменную разбить на Строки
$strings = explode("\r\n", $file);
Далее сделать поиск в кадом ключе $strings[0], [1], [2]... искать кол-во символов "\n" если оно меньше 10, то делать unset($strings[$key]);
Потом склеиваем оставшиеся ключи и перезаписываем файл.
Надеюсь правильно понял суть вопроса =)
Как раз таки нет :)
Что имеем:
Не знаю.
Может быть, это еще хуже.
О чем это вы? встревожился Олег.
Просто я подумала, что лучше, сразу отнять жизнь у зверя или взять его беспомощного, сонного в плен и отнять свободу? Обречь всю жизнь сидеть в тесной клетке.
Ошибаетесь! торжествуя воскликнул Олег.
Если мы лишаем зверей свободы, то очень ненадолго: лишь на столько времени, чтобы успеть перевезти их в заранее намеченные места.
И там сейчас же возвращаем им свободу.
Наша цель акклиматизация и приручение полезных и красивых животных.
Мы развезем их по всем местам, где многие из них давно уже выбиты, а другие никогда не жили, но где подходящие для них условия жизни: климат, ландшафт, корма.
Из поколения в поколение мы будем переделывать их, у мирных зверей будем уничтожать древний страх перед человеком.
Вы только вообразите себе, Зенита, милая, стадо красавцев-оленей, пасущееся где-нибудь на Валдае или в Комарово под самым Ленинградом! Безбоязненно подбегает к вам этакий горный рогач, идет, чтобы вы его угостили из своих рук кусочком сахара, ласково потрепали по холке.
Олег! прервала его Зенита.
Знаете что, Олег? Вы не можете.
это.
ну.
С помощью регулярки нужно удалить эти строки.В конце каждой стоки стоит \n.Поидее в этих строках между \n и \n меньше 10 символов.
re.sub - замена по рег. выражению.
re.sub('\n.{1,10}\n')',"\n",self.text)
Другие виды переноса строки зарание убраны(\r\n).
Pashkela
12.12.2009, 21:30
чото хитромудрая надуманность какая-то, вот так вот и пох на размеры файла:
<?php
$a = fopen('123.txt','r');
while (!feof($a)) {
$b = trim(fgets($a));
if (strlen($b)>10) echo $b . "<br>";
}
?>
Причем здесь регулярки - искренне не понял. Или залей куда-нибудь пример такого файла
При том что в моём коде,в данном месте легче,удобне и быстрее использовать рег.выражение.И не спрашивай почему.
Pashkela
12.12.2009, 21:36
Бред, имхо
PS: Сорри, но правда бред
ни одна регулярка не будет работать быстрее while и strlen, имхо в квадрате
Тем более с большим файлом
Бред, имхо
PS: Сорри, но правда бред
ни одна регулярка не будет работать быстрее while и strlen, имхо в квадрате
При том что в моём коде,в данном месте легче,удобне и быстрее использовать рег.выражение.И не спрашивай почему.
Я прекрасно знаю что и где быстрее,скорость я замерял специально.+ ко всему файла с данным контентом для обработки нет,сам текст появляется после некой генерации и обработки текста.+ эту регулярку я смогу просто добавить к другой которая уже много другого ищет и заменяет на \n.
Pashkela
12.12.2009, 21:56
понял, может это наведет на подсказку:
<?php
$a = fopen('123.txt','r');
while (!feof($a)) {
$b = trim(fgets($a));
if (preg_match('#.{10}#',$b)) echo $b . "<br>";
}
?>
где в 123.txt - твой текст
$string = "\n".$string."\n";
$out = preg_replace("#\n(.{1,10})\n#","\n",$string);
echo $out;
Хочу удалить строки длина которых меньше 10 строк.
re.sub - замена по рег. выражению.
re.sub('\n.{1,10}\n')',"\n",self.text)
Что не так ?
Не знаю но как в путоне с кавычками - '\n' и "\n" разные вещи или нет? Или в regexp это учитывается?
Не знаю но как в путоне с кавычками - '\n' и "\n" разные вещи или нет? Или в regexp это учитывается?
'\n' - строка \n
"\n" - перенос строки
а в шаблоне если ищещь строку \n, то экранируешь ее. /\n
$string = "\n".$string."\n";
$out = preg_replace("#\n(.{1,10})\n#","\n",$string);
echo $out;
Вот часть текста,спрашивалось зачем заново писать мою регулярку на другом языке ?
Сохраняйте в unix формате.
<?php
$string = ".
Как в сказке! задумчиво сказала Зенита, с трудом заставив себя отойти от клетки.
Но мне пора домой.
По дороге вы всё объясните мне? Правда? Конечно! С удовольствием! заторопился юноша, всё это время деликатно молчавший.
Он взял ее под руку, и товарищи ее по экспедиции, видевшие, как они шли по улице, решили, что она встретила здесь своего старого друга, так просто и хорошо они разговаривали.
Объяснение это было недлинно.
Всё дело.
начал юноша.
Простите, перебила Зенита.
А как вас зовут? Почти как вашего оленя: Олешком.
Или, если всерьез, Олегом.";
$out = preg_replace("#\n(.{1,20})\n#","\n",$string);
echo $out;
?>
'\n' - строка \n
"\n" - перенос строки
а в шаблоне если ищещь строку \n, то экранируешь ее. /\n
спасибо конечно но я не про php и это как бы подсказка rushter.
rushter
Я не пойму, тогда в чем проблема? Если твоя регулярка работает, то к чему тема?
Твоя регулярка ищет количество имволов между "\n" и "\n", если и работает, то. Первую строку он не распознает, т.к. она начальная и перед нею нету знака переноса строки, что соответсвенно и с конечной строкой.
rushter
Я не пойму, тогда в чем проблема? Если твоя регулярка работает, то к чему тема?
Твоя регулярка ищет количество имволов между "\n" и "\n", если и работает, то. Первую строку он не распознает, т.к. она начальная и перед нею нету знака переноса строки, что соответсвенно и с конечной строкой.
.
Как в сказке! задумчиво сказала Зенита, с трудом заставив себя отойти от клетки.
По дороге вы всё объясните мне? Правда? Конечно! С удовольствием! заторопился юноша, всё это время деликатно молчавший.
Он взял ее под руку, и товарищи ее по экспедиции, видевшие, как они шли по улице, решили, что она встретила здесь своего старого друга, так просто и хорошо они разговаривали.
Всё дело.
Простите, перебила Зенита.
А как вас зовут? Почти как вашего оленя: Олешком.
Или, если всерьез, Олегом.
Всё дело. разве больше 30 ?
Скорее это особенность замены по рег.выражению т.к следующая строка после "Все дело тоже" меньше 30.
разве больше 20 ?
хммм =\
Вообщем такая тема, если было 2 строки меньше 20 символов одна - за другой, то вырезается только одна. Видимо замена на \n мешает сразу вырезать сл. строку.
Тоесть если между этими строками вставить еще одну больше 20 символов, то в один раз все вырезается.
Например:
$out = preg_replace("#\n(.{1,20})\n#","\n",$string);
$out = preg_replace("#\n(.{1,20})\n#","\n",$out);
Успешно вырежет оставшуюся (забытую) строку.
Но если их будет больше 2х подряд, то проблема. Вообщем нужен или цикл, каждый раз проверя еслть ли там строки меньше 20 символов, либо думать над шаблоном
Я написал про это в своём посте.Вопрос закрыт.
foxxx1234
13.12.2009, 03:09
Location: /id12345677
Подскажите как написать чтобы выводились только цифры
Pashkela
13.12.2009, 03:13
<?php
$a = "Location: /id12345677";
preg_match('#\d+#',$a,$res);
echo $res[0];
?>
foxxx1234
13.12.2009, 03:18
Спасибо большое.
foxxx1234
14.12.2009, 15:22
Что то не получается вытащить цифры после Location: /id
HTTP/1.1 302 Found
Server: nginx/0.7.59
Date: Mon, 14 Dec 2009 11:17:46 GMT
Content-Type: text/html; charset=windows-1251
Connection: close
X-Powered-By: PHP/5.2.6-1+lenny3
Pragma: no-cache
Cache-control: no-store
Set-Cookie: remixchk=5; expires=Thu, 09-Dec-2010 05:38:21 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixsid=c54f572c56461cef2bc77daf110a3a2c16bc62f49 f31bb800bf161a; expires=Thu, 09-Dec-2010 10:36:40 GMT; path=/; domain=.vkontakte.ru
Location: /id12345678
Vary: Accept-Encoding
Content-Length: 0
HTTP/1.1 200 OK
Server: nginx/0.7.59
Date: Mon, 14 Dec 2009 11:17:50 GMT
Content-Type: text/html; charset=windows-1251
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.2.6-1+lenny3
Pragma: no-cache
Cache-control: no-store
Vary: Accept-Encoding
Подскажите кто может.
foxxx1234,
Location: /id(\d+)\n
preg_match ('#Location:\s+/id(\d+)\r\n#', $str, $m);
echo $m[1];
у меня есть текст <a href="" class="tracknews">*ТЕКСТ*</a> и надо заменивать что бы остался только *ТЕКСТ*, сам шаблон статический кроме слова *ТЕКСТ*. я написал регулярку только она его не хочет доставать:
$txt = preg_replace('#<a href="" class="tracknews">.+?</a>#si', '\\1', $txt);
у меня есть текст <a href="" class="tracknews">*ТЕКСТ*</a> и надо заменивать что бы остался только *ТЕКСТ*, сам шаблон статический кроме слова *ТЕКСТ*. я написал регулярку только она его не хочет доставать:
$txt = preg_replace('#<a href="" class="tracknews">.+?</a>#si', '\\1', $txt);
<?php
$txt = '<a href="" class="tracknews">*ТЕКСТ*</a>';
$txt = preg_replace('#<a href="" class="tracknews">(.*)</a>#','$1',$txt);
echo $txt;
?>
здравствуйте ещё раз, писал я регулярку и никак не могу её сделать рабочей
есть текст
<tr><td class="type">премьера (мир)</td><td class="calendar"><a href="/level/80/film/279221/">14 ноября 2009</a></td></tr>
<tr><td class="type">премьера (РФ)</td><td class="calendar"> <a class='all' href='/level/8/view/prem/year/2009/#279221'>19 ноября 2009</a>, <a href='/level/10/m_act[company]/4/' class='all'>«Парадиз»</a></td></tr>
вот как я сделал
$search = '#<tr><td class="type">премьера (РФ)</td><td class="calendar">(.*)</td></tr>#';
$search = '#<tr><td class="type">премьера (мир)</td><td class="calendar">(.*)</td></tr>#';
но они не пашут
alwex preg_match('~<tr><td class="type">премьера \(РФ\)</td><td class="calendar">(.*?)</td></tr>~i',$in,$out);
Для любителей копировать не думая - придумали функцию preg_quote.
Здравствуйте! :rolleyes:
На странице есть вот такой текст:
function contact() {
popup("/JobSearch/JobContactDetails.aspx?JobId=45821542&JobTitle=Credit+Controller&Email=davidjarvis%40morgan-harvey.co.uk&Ref=DJ223&Tel=0844+811+0473&Fax=&Company=Morgan+Harvey&Contact=David+Jarvis&Address=&ExternalURL=", "ContactDetails", 470, 350);
}
Как с помощью регулярного выржаения выпарсить нужные мне:
JobId
JobTitle
Email
Ref
Tel
Fax
Company
Contact
Address
ExternalURL
Т.е. все GET параметры передаваемые на страницу.
Заранее благодарен! :confused:
OnArs. А тебе даже не обязательно парсить. Можешь просто получить строку с парамтрами и разбирать ее функцией split (или ее аналогом, но в большинстве языков она есть). тоесть сплитишь по символу "&", в итоге у тебя будет список вида ["имя=значение", "имя=значение"] и каждый элемент списка ты можешь так же сплитить на знаке "=". ну можно и по регулярке. тут все предельно просто. возьмем, к примеру JobId:
JobId=(.*?)&
И так все, что тебе нужно. Ну у последнего контрольный символ в конце будет не &, а двойные ковычки ".
есть строка вида:
{aaa.bbb} {aaa.vvv} etc
в одной строке может быть произвольное количество выражения.
нужно взять то, что после точки.
пробовал preg_match_all('/{aaa\.(.*)}/', строка, куда_нужно_записать). не получается.
ps что интересно: если строка (да да, именно строка. ОДНА строка) будет такого вида:
{aaa.bbb}
{aaa.vvv}
etc,
то выражение после точки нормально записывается в массив.
zythar,
int preg_match_all ( string $pattern , string $subject , array &$matches [, int $flags [, int $offset ]] )
<?php
$i = "{aaa.bbb} {aaa.vvv}";
preg_match_all("/{aaa\.(.*?)}/", $i, $q);
print_r($q);
?>
whexp@localhost:~/dev$ php5 regex.php
Array
(
[0] => Array
(
[0] => {aaa.bbb}
[1] => {aaa.vvv}
)
[1] => Array
(
[0] => bbb
[1] => vvv
)
)
гм.. да, заработало, домо.
если не трудно: чем отличается (.*?) от (.*)?
просто времени нет искать, сорьте
zythar, http://ru.wikipedia.org/wiki/Regex >> # 3.3.1 Жадная и ленивая квантификация
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/favicon.ico
RewriteCond %{REQUEST_URI} !^/js/
RewriteCond %{REQUEST_URI} !^/css/
RewriteCond %{REQUEST_URI} !^/images/
RewriteRule ^(.[a-zA-Z0-9]+)/([a-zA-Z0-9]+)/(.+)/?$ index.php?action=$1&act=$2
RewriteRule ^([^.]+)$ /index.php
Про обращении к картинке /images/grade/b_grade.png открывается Index.php
в чем ошибка?
zythar, http://ru.wikipedia.org/wiki/Regex >> # 3.3.1 Жадная и ленивая квантификация
домо (*
Подскажите регулярку для следующей задачи
Подходит любое слово, состоящие из букв и цифр, кроме слова admin
'/site/test123' - подходит
'/site/admin' - НЕ подходит
Что-то типа
'site/([\w\d^admin]+)'
Спасибо
LStr1ke
"/^admin/i"
Но мне нужны только слова и цифры (\w\d)
В данном случае регулярка будет пропускать все ( и _,?* и т.д.)
programming
22.12.2009, 17:32
Есть переменная, в которой лежит множество url'ов.
Например,
http://ya.ru/hhgyugyy/llkkk.pkloij/.kkkko
http://jjfurh.com/efef/po.,ki
http://hhgfyr.info/?kjtit=poklojk
Какой регуляркой можно выдернуть домены?
То есть должен на выходе получиться массив:
http://ya.ru/
http://jjfurh.com/
http://hhgfyr.info/
Думал сделать такой регуляркой, но она вырывает до последней косой черты, а нужно до первой:
preg_match_all('/http:\/\/(.*)\//',$links, $regs);
Спасибо.
Pashkela
22.12.2009, 17:42
<pre>
<?php
$a = '
http://ya.ru/hhgyugyy/llkkk.pkloij/.kkkko
http://ya1.ru/efef/po.,ki
http://ya2.ru/kjtit=poklojk';
preg_match_all('/(http:\/\/?[^\/]+\/)/i',$a,$b);
print_r ($b[1]);
?>
</pre>
programming
22.12.2009, 17:50
<pre>
<?php
$a = '
http://ya.ru/hhgyugyy/llkkk.pkloij/.kkkko
http://ya1.ru/efef/po.,ki
http://ya2.ru/kjtit=poklojk';
preg_match_all('/(http:\/\/?[^\/]+\/)/i',$a,$b);
print_r ($b[1]);
?>
</pre>
Большое спасибо.
Подскажите регулярку для следующей задачи
Подходит любое слово, состоящие из букв и цифр(ТОЛЬКО ИЗ БУКВ И ЦИФР), кроме слова admin
'/site/test123' - подходит
'/site/admin' - НЕ подходит
'/site/neadmi1n"&(*&)*_ ""1' - НЕ подходит
Что-то типа
'site/([\w\d^admin]+)'
Спасибо
<?php
$str = '/site/admin1';
if(preg_match('#$/site/admin^#i',$str))
echo 'NO';
else echo 'OK';
?>
<?php
$str = '/site/admin1';
if(preg_match('#$/site/admin^#i',$str))
echo 'NO';
else echo 'OK';
?>
Такое решение уже давали
Читаем внимательно условие
Подходит любое слово, состоящие из букв и цифр
Это решение пропускает также и спец символы
например
$str = '/site/NEadmin"&(*&)*_ ""1';
А не легче ставить проверку на присутствие слова "admin". Если присутвует, то ругаемся, нет - выполняем нужные действия.
if(preg_match('#(admin|[\@\%\^\&\*\_])#i',$_GET['sec'])){
echo 'No';
}else{
echo 'ok!';
}
Извращеная регулярка на ночь гредующую.Но что удивительно,это работает! оО
LStr1ke
А не легче ставить проверку на присутствие слова "admin". Если присутвует, то ругаемся, нет - выполняем нужные действия.
Это нужно для Zend_Controller_Router_Route_Regex, так что без изврата не получится
m0Hze
Извращеная регулярка на ночь гредующую.Но что удивительно,это работает! оО
Оо это же гениально просто!!! перечислить запрещенные символы в том числе и слово admin
Блин, потом зная решение, только и остается гадать, почему нужно было придумывать сложные варианты
Спасибо!
programming
27.12.2009, 14:30
Есть переменная, в которой содержится фрагмент кода:
<p>
<b>Код счётчика</b><br><textarea rows=22 cols=90><!--Rating@Mail.ru counter-->
<script language="javascript" type="text/javascript"><!--
d=document;var a='';a+=';r='+escape(d.referrer);js=10;//--></script>
<script language="javascript1.1" type="text/javascript"><!--
a+=';j='+navigator.javaEnabled();js=11;//--></script>
<script language="javascript1.2" type="text/javascript"><!--
s=screen;a+=';s='+s.width+'*'+s.height;
a+=';d='+(s.colorDepth?s.colorDepth:s.pixelDepth); js=12;//--></script>
<script language="javascript1.3" type="text/javascript"><!--
js=13;//--></script><script language="javascript" type="text/javascript"><!--
d.write('<a href="http://top.mail.ru/jump?from=1760535" target="_top">'+
'<img src="http://dd.cd.ba.a1.top.mail.ru/counter?id=1760535;t=130;js='+js+
a+';rand='+Math.random()+'" alt="Рейтинг@Mail.ru" border="0" '+
'height="40" width="88"><\/a>');if(11<js)d.write('<'+'!-- ');//--></script>
<noscript><a target="_top" href="http://top.mail.ru/jump?from=1760535">
<img src="http://dd.cd.ba.a1.top.mail.ru/counter?js=na;id=1760535;t=130"
height="40" width="88" border="0" alt="Рейтинг@Mail.ru"></a></noscript>
<script language="javascript" type="text/javascript"><!--
if(11<js)d.write('--'+'>');//--></script>
<!--// Rating@Mail.ru counter-->
</textarea>
Какой регуляркой можно выдрать код счётчика?
Спасибо.
Отредактируй пост, и на будущее будь добр оформляй код в тэгах [*php]*[*/php]
programming
27.12.2009, 17:01
Отредактируй пост, и на будущее будь добр оформляй код в тэгах [*php]*[*/php]
Ок.
Пробовал /<textarea rows=22 cols=90>(.*)<\\/textarea>/
Но получается пустота..
Как же выдрать код?
<?php
$var = "<p>
<b>Код счётчика</b><br><textarea rows=22 cols=90><!--Rating@Mail.ru counter-->
<script language="javascript" type="text/javascript"><!--
d=document;var a='';a+=';r='+escape(d.referrer);js=10;//--></script>
<script language="javascript1.1" type="text/javascript"><!--
a+=';j='+navigator.javaEnabled();js=11;//--></script>
<script language="javascript1.2" type="text/javascript"><!--
s=screen;a+=';s='+s.width+'*'+s.height;
a+=';d='+(s.colorDepth?s.colorDepth:s.pixelDepth); js=12;//--></script>
<script language="javascript1.3" type="text/javascript"><!--
js=13;//--></script><script language="javascript" type="text/javascript"><!--
d.write('<a href="http://top.mail.ru/jump?from=1760535" target="_top">'+
'<img src="http://dd.cd.ba.a1.top.mail.ru/counter?id=1760535;t=130;js='+js+
a+';rand='+Math.random()+'" alt="Рейтинг@Mail.ru" border="0" '+
'height="40" width="88"><\/a>');if(11<js)d.write('<'+'!-- ');//--></script>
<noscript><a target="_top" href="http://top.mail.ru/jump?from=1760535">
<img src="http://dd.cd.ba.a1.top.mail.ru/counter?js=na;id=1760535;t=130"
height="40" width="88" border="0" alt="Рейтинг@Mail.ru"></a></noscript>
<script language="javascript" type="text/javascript"><!--
if(11<js)d.write('--'+'>');//--></script>
<!--// Rating@Mail.ru counter-->
</textarea> ";
preg_match('#<textarea .*>(.*)</textarea>#s',$var, $m);
echo $m[1];
?>
programming
27.12.2009, 19:02
Не пашет=(
PandoraBox
27.12.2009, 20:25
Ок.
Пробовал /<textarea rows=22 cols=90>(.*)<\\/textarea>/
Но получается пустота..
Как же выдрать код?
$tmp = <<<TMP
<p>
<b>Код счётчика</b><br><textarea rows=22 cols=90><!--Rating@Mail.ru counter-->
<script language="javascript" type="text/javascript"><!--
d=document;var a='';a+=';r='+escape(d.referrer);js=10;//--></script>
<script language="javascript1.1" type="text/javascript"><!--
a+=';j='+navigator.javaEnabled();js=11;//--></script>
<script language="javascript1.2" type="text/javascript"><!--
s=screen;a+=';s='+s.width+'*'+s.height;
a+=';d='+(s.colorDepth?s.colorDepth:s.pixelDepth); js=12;//--></script>
<script language="javascript1.3" type="text/javascript"><!--
js=13;//--></script><script language="javascript" type="text/javascript"><!--
d.write('<a href="http://top.mail.ru/jump?from=1760535" target="_top">'+
'<img src="http://dd.cd.ba.a1.top.mail.ru/counter?id=1760535;t=130;js='+js+
a+';rand='+Math.random()+'" alt="Рейтинг@Mail.ru" border="0" '+
'height="40" width="88"><\/a>');if(11<js)d.write('<'+'!-- ');//--></script>
<noscript><a target="_top" href="http://top.mail.ru/jump?from=1760535">
<img src="http://dd.cd.ba.a1.top.mail.ru/counter?js=na;id=1760535;t=130"
height="40" width="88" border="0" alt="Рейтинг@Mail.ru"></a></noscript>
<script language="javascript" type="text/javascript"><!--
if(11<js)d.write('--'+'>');//--></script>
<!--// Rating@Mail.ru counter-->
</textarea>
TMP;
// -----------------------------------------------------
$tmp = html_entity_decode($tmp);
flush(); // Buffer clean
if (preg_match("/<textarea rows=22 cols=90>(.*)<\/textarea>/is", $tmp, $match ))//
{
print_r($match[1]);
}
с тебя пиво :D
Не пашет=(
У меня работает у тебя нет, мистика? Или на форуме вылажуем одно в имеем другое?
programming
31.12.2009, 20:55
Pandorra, спасибо.
Ещё проблема..
Вот html страница:
<a class="normal s" href="/Pill?q=179309">Код счетчика</a>
Как вырвать 179309?
Спасибо.
С наступающим НГ))
$a = '<a class="normals" href="/Pill?q=179309">Код счетчика</a>';
preg_match('#<a class=\"normals\" href=\"/Pill\?q=(.*?)\">#',$a,$out);
var_dump($out);
С новым годом (:
Vlad&slav
01.01.2010, 03:18
<a href="http://www.batareika.info/index.php?do=register&doaction=validating&id=ZXhwb G9kZXJ8fGV4MDAwQG1haWwucnV8fGFjYmQ4MTBhM2M5ZmU0Zjc yZDQ5NThkMDA1M2VmMzRkfHw4MTAwZWU5NDM3NzU3YjJiYTRkN 2E4YzY2YjM0Y2FhZQ%3D%3D" target="_blank">
Подскажите регулярку (php) чтобы вытянуть адрес
Самый простой вариант #<a.?+href="([^"]+)".*?>#
и еще так
#<a[^>]*? href="(.*?)"#
Vlad&slav
02.01.2010, 12:16
Благодарю
InfectedM
05.01.2010, 00:49
нужно выдрать значение всех value из этой формы.Напишите плиз регулярку
<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__LBD_VCT" id="__LBD_VCT" value="11" />
<input type="hidden" name="__LBD_SGC_login_ctl00_cph_captcha" id="__LBD_SGC_login_ctl00_cph_captcha" value="0" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE5MDIzMzgzMz1ZBYCZg9kFgICA3w9kFgZmD2QWAmY PFgIeC18hSXRlbUNvdW50AgMWBgIBD2QWAmYPFQEiPG5vYnI+P HNwYW4+0JLRhdC+0LQ8L3NwYW4+PC9ub2JyP11CAw9kFgJmDxU BTDxub2JyPjxhIGhyZWY9J3NpZ251cC5hc3B4JyB0YXJnZXQ9J 19zZWxmJz7QoNC10LPQuNGB0YLRgNCw0YbQuNGPPC9hPjwvbm9 icj5kAgUPZBYCZg8VAUk8bm9icj48YSBocmVmPSdhYm91dC5hc 3B4JyB0YXJnZXQ9J19zZWxmJz7QmNC90YTQvtGA0LzQsNGG0Lj RjzwvYT48L25vYnI+ZAIDD2QWCgIEDxBkZBYBZmQCFA8PFgIeB 0VuYWJsZWRoZGQCGw8PFgIeCFJlYWRPbmx5aGRkAh0PDxYCHwF oZGQCHg8PFgIfAWhkZAIFDw8WAh4JU2hvcnRMaXN0Z2QWBGYPF gIfAAIDFgZmD2QWBGYPDxYCHgRUZXh0BQ7QoNGD0YHRgdC60Lj QuWRkAgEPDxYGHgtDb21tYW5kTmFtZQUCcnUfBAUO0KDRg9GB0 YHQutC40LkeB1Zpc2libGVoZGQCAg9kFgRmDw8WBB8EBQdFbmd saXNoHwZoZGQCAQ8PFgQfBQUCZW4fBAUHRW5nbGlzaGRkAgQPZ BYEZg8PFgQfBAUHRGV1dHNjaB8GaGRkAgEPDxYEHwUFAmRlHwQ FB0RldXRzY2hkZAICDxBkZBYAZGRAv5Ju3oqH7kjKpWuXz49wG vbN0A==" />
</div>
InfectedM
$text = " <input type=\"hidden\" name=\"__LASTFOCUS\" id=\"__LASTFOCUS\" value=\"\" />
<input type=\"hidden\" name=\"__EVENTTARGET\" id=\"__EVENTTARGET\" value=\"\" />
<input type=\"hidden\" name=\"__EVENTARGUMENT\" id=\"__EVENTARGUMENT\" value=\"\" />
<input type=\"hidden\" name=\"__LBD_VCT\" id=\"__LBD_VCT\" value=\"11\" />
<input type=\"hidden\" name=\"__LBD_SGC_login_ctl00_cph_captcha\" id=\"__LBD_SGC_login_ctl00_cph_captcha\" value=\"0\" />
<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\"/wEPDwULLTE5MDIzMzgzMz1ZBYCZg9kFgICA3w9kFgZmD2QWAmY PFgIeC18hSXRlbUNvdW50AgMWBgIBD2QWAmYPFQEiPG5vYnI+P HNwYW4+0JLRhdC+0LQ8L3NwYW4+PC9ub2JyP11CAw9kFgJmDxU BTDxub2JyPjxhIGhyZWY9J3NpZ251cC5hc3B4JyB0YXJnZXQ9J 19zZWxmJz7QoNC10LPQuNGB0YLRgNCw0YbQuNGPPC9hPjwvbm9 icj5kAgUPZBYCZg8VAUk8bm9icj48YSBocmVmPSdhYm91dC5hc 3B4JyB0YXJnZXQ9J19zZWxmJz7QmNC90YTQvtGA0LzQsNGG0Lj RjzwvYT48L25vYnI+ZAIDD2QWCgIEDxBkZBYBZmQCFA8PFgIeB 0VuYWJsZWRoZGQCGw8PFgIeCFJlYWRPbmx5aGRkAh0PDxYCHwF oZGQCHg8PFgIfAWhkZAIFDw8WAh4JU2hvcnRMaXN0Z2QWBGYPF gIfAAIDFgZmD2QWBGYPDxYCHgRUZXh0BQ7QoNGD0YHRgdC60Lj QuWRkAgEPDxYGHgtDb21tYW5kTmFtZQUCcnUfBAUO0KDRg9GB0 YHQutC40LkeB1Zpc2libGVoZGQCAg9kFgRmDw8WBB8EBQdFbmd saXNoHwZoZGQCAQ8PFgQfBQUCZW4fBAUHRW5nbGlzaGRkAgQPZ BYEZg8PFgQfBAUHRGV1dHNjaB8GaGRkAgEPDxYEHwUFAmRlHwQ FB0RldXRzY2hkZAICDxBkZBYAZGRAv5Ju3oqH7kjKpWuXz49wG vbN0A==\" />
";
preg_match_all('#<input[^<>]*name=([\'"])(?P<name>[^<>]*?)\1([^<>]*value=([\'"])(?P<value>[^<>\4]*?)\4)?#i',$text,$result);
$out = array_combine($result['name'],$result['value']);
var_dump($out);
InfectedM
05.01.2010, 22:05
Gifts спасибо
Подскажите пожалуйста:
<script>print_email('mail','yandex.ru');</script>
//Пытаюсь выдрать mail и yandex.ru
|>print_email(\'(.*?)\',\'(.*?)\')|Uis //c помощью вот этого...
Страшно, ужасно и ничего не получается...
|>print_email\(\'(.+?)\',\s*\'(.+?)\'\);|
Круглые скобки экранировать следует
Круглые скобки экранировать следует
http://pyha.ru/fishki/regexp/
Совпадений не найдено.
Может ещё какие варианты?
http://pyha.ru/fishki/regexp/
Совпадений не найдено.
Может ещё какие варианты?
#print_email\('(.*?)','(.*?)'\);#is
=>
Array
(
[0] => Array
(
[0] => print_email('mail','yandex.ru');
)
[1] => Array
(
[0] => mail
)
[2] => Array
(
[0] => yandex.ru
)
)
Работает! Спасибо! Я проверял на пыхе- он выдаёт ошибку. Проверил на локалке всё работает х.з. в чём дело.
Работает! Спасибо! Я проверял на пыхе- он выдаёт ошибку. Проверил на локалке всё работает х.з. в чём дело.
экстросенсы в отпуске =\
попробуй закоменить кавычки и запятые
-----------------------------------------------
теперь я спрошу
<Files .htaccess>
Order deny,allow
Deny from all
</Files>
<IfModule mod_php4.c>
php_value session.use_trans_sid 0
</IfModule>
<IfModule mod_deflate.c>
<FilesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
AddDefaultCharset utf-8
Options +FollowSymLinks
Options -Indexes
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*) $1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?category=$1 [L]
RewriteCond %{HTTP_HOST} ^www\.host\.co\.cc$ [NC]
RewriteRule ^(.*)$ http://host.co.cc/$1 [R=301,L]
как это адаптировать под nginx?
#Wolf#, krypt3r
Зачем лишние телодвижения? Модификаторы is и тд
$var = "<script>print_email('mail','yandex.ru');</script>";
if(preg_match("#print_email\('(.*)','(.*)'\)#",$var, $m))
print_r($m);
http://wap.gismeteo.ru/gm/normal/node/prognoz_week/6/?field_wmo=2778&field_index=2778&sd_field_date=gen_past_date_0&ed_field_date=gen_past_date_-6&field_tod=2
Нужно сграбить: Полную дату, состояние(ветренно,пасмурн о...),и градусы.Весь мозг пере*бал,но там какой то символ нечитаемый :(
http://wap.gismeteo.ru/gm/normal/node/prognoz_week/6/?field_wmo=2778&field_index=2778&sd_field_date=gen_past_date_0&ed_field_date=gen_past_date_-6&field_tod=2
Нужно сграбить: Полную дату, состояние(ветренно,пасмурн о...),и градусы.Весь мозг пере*бал,но там какой то символ нечитаемый :(
Вот грубо, на скорую руку:
<?php
$fp = file_get_contents('http://wap.gismeteo.ru/gm/normal/node/prognoz_week/6/?field_wmo=2778&field_index=2778&sd_field_date=gen_past_date_0&ed_field_date=gen_past_date_-6&field_tod=2');
################################################ ПАРСИМ
# Ясность неба #
if(preg_match_all('#<div style="font-size: 9px; padding: 0 0 3px 0; font-family: tahoma;">(.*)</div>#Uis',$fp,$osadki)) {
$osadki = array_map('strip_tags', $osadki[1]);
$osadki = array_map('trim', $osadki);
}
# Цельсий #
preg_match_all('#<span style="color: (darkblue|\#cc0000);">(.*)</span>#',$fp,$cel);
# День #
if(preg_match_all('#<a href="/gm/normal/node/prognoz_day/6/\?field_wmo=.*">(.*)</a>#Uis',$fp,$day)) {
$count = count($day[1]);
for ($i=0;$i < $count; $i++) {
$days[] = strip_tags($day[1][$i]);
$i++;
}
}
################################################ НАПАРСИЛИСЬ
for ($i=0, $o=0; $i<=6; $i++) {
echo $days[$i].'<br>';
echo $osadki[$o].'<br>';
$o++;
echo $osadki[$o].'<br>';
echo $cel[2][$i+1].'<br><hr>';
}
?>
Результат:
Чт 7 Января 2010г.
ясно
без осадков
-17°
Пт 8 Января 2010г.
без осадков
ясно
-22°
Сб 9 Января 2010г.
ясно
без осадков
-10°
Вс 10 Января 2010г.
без осадков
малооблачно
-6°
Пн 11 Января 2010г.
малооблачно
без осадков
+1°
Вт 12 Января 2010г.
без осадков
ясно
-12°
Ср 13 Января 2010г.
ясно
без осадков
-13°
m0Hze http://pastebin.ru/309582
Но лучше было бы парсить откуда нибудь отсюда: http://gismeteo.ru/city/busy/?city=4368&shift=0&print=1
m0Hze
когда-то для себя делал, маленький примитивный, но мне хватало.
https://forum.antichat.ru/showpost.php?p=1455551&postcount=846
DimOnOID
07.01.2010, 16:56
id=\"new_votes\">5<\/td>
собсна на пятёру.
Не шарю регулярках.хелп.
Помогите составить регулярное выражение для HTML строки c правильной вложенностью скобок типа (() (()()) ), где, например, '(' = '<div>', а ')' = '</div>'. Выражение должно возвратить строку из символов между крайним ( и ).
Pashkela
09.01.2010, 23:23
id=\"new_votes\">5<\/td>
собсна на пятёру.
Не шарю регулярках.хелп.
<pre>
<?php
$a = 'id="new_votes\">5<\/td>
id="new_votes\">6<\/td>
id="new_votes\">7<\/td>
';
preg_match_all('|id="new_votes\\\">(.*)<\\\/td>|',$a,$b);
print_r ($b[1]);
?>
</pre>
Помогите составить регулярное выражение для HTML строки c правильной вложенностью скобок типа (() (()()) ), где, например, '(' = '<div>', а ')' = '</div>'. Выражение должно возвратить строку из символов между крайним ( и ).
Зацени пост выше своего и подумай, как надо спрашивать вопросы *лично я нихрена не понял, напиши тупо, что надо выдернуть, не умничай - в твоем примере всего две скобки, обе-две крайние, как не крути*
Зацени пост выше своего и подумай, как надо спрашивать вопросы *лично я нихрена не понял, напиши тупо, что надо выдернуть, не умничай - в твоем примере всего две скобки, обе-две крайние, как не крути*
на сайте http://soft-best.ws/
нужно выдернуть полное описание новости
Pashkela
09.01.2010, 23:35
мда.....ты заставляешь думать, а это очень больно.....Сложно привести ссылку на конкретную новость и показать текст (в исходниках), который надо выдрать? Вежливости в школе не научили?
speles preg_match ('~<div[^>]*>([\s\S]*)</div>~i',$in,$out);
Подскажите, почему это:
preg_match('/\[\[(.*?)\]\]/im', $result, $temp);
не ищет в этом:
здесь много текста html
var friendsData = {здесьмногоразныхсимволов 'friends':[[2242936,"Магомед Арабханов","http:\/\/cs9696.vkontakte.ru\/u2242936\/b_0be60f10.jpg",1,"","Магомеда",0,1,932488,"",0],[17185664,"Влад Зотов","http:\/\/cs4326.vkontakte.ru\/u17185664\/b_f9cd97e9.jpg",1,"","Влада",0,1,953886,"",0],[3908114,"Влад Колесников","http:\/\/cs4150.vkontakte.ru\/u3908114\/b_5ca376ca.jpg",1,"","Влада",0,1,304,"12",0],[33390954,"Stephan Lampka","http:\/\/cs9636.vkontakte.ru\/u33390954\/b_14219071.jpg",1,"","Stephan",0,1,0,"",0],[25596089,"Оля Ющенко","http:\/\/cs10061.vkontakte.ru\/u25596089\/b_928d6744.jpg",1,"","Оли",0,1,2,"15",0]],'universities':{12:"ВИ",50745:"не указан"},'filter':'all'};
здесь много текста html включая [[]]
то что ограничено между [[ и ]]
Подскажите, почему это:
preg_match('/\[\[(.*?)\]\]/im', $result, $temp);
не ищет в этом:
здесь много текста html
var friendsData = {здесьмногоразныхсимволов 'friends':[[2242936,"Магомед Арабханов","http:\/\/cs9696.vkontakte.ru\/u2242936\/b_0be60f10.jpg",1,"","Магомеда",0,1,932488,"",0],[17185664,"Влад Зотов","http:\/\/cs4326.vkontakte.ru\/u17185664\/b_f9cd97e9.jpg",1,"","Влада",0,1,953886,"",0],[3908114,"Влад Колесников","http:\/\/cs4150.vkontakte.ru\/u3908114\/b_5ca376ca.jpg",1,"","Влада",0,1,304,"12",0],[33390954,"Stephan Lampka","http:\/\/cs9636.vkontakte.ru\/u33390954\/b_14219071.jpg",1,"","Stephan",0,1,0,"",0],[25596089,"Оля Ющенко","http:\/\/cs10061.vkontakte.ru\/u25596089\/b_928d6744.jpg",1,"","Оли",0,1,2,"15",0]],'universities':{12:"ВИ",50745:"не указан"},'filter':'all'};
здесь много текста html включая [[]]
то что ограничено между [[ и ]]
Если я не ошибаюсь , нужно вот так
preg_match_all('/\\[\\[(.*?)\\]\\]/im', $result, $temp);
Если я не ошибаюсь , нужно вот так
К сожалению, не помогло(
P.S. Код нужен только для первого совпадения.
GlooK попробуй вместо /im поставить /s . Кстати что значит /im ? мм я вот у себя попробывал у меня твой вариант все нормально парсит.
GlooK попробуй вместо /im поставить /s . Кстати что значит /im ? мм я вот у себя попробывал у меня твой вариант все нормально парсит.
Спасибо. Решение нашел.
Оказывается данные не получались из-за символа жадности ?
Как-то странно он работает.
/<\?.*\?>/s
Работает неправильно.
Надо, чтобы из текста вида
<?
TEST
?>
NO
<?
TEST2
?>
он выбирал
<?
TEST
?>
и
<?
TEST
?>
А он выбирает ВЕСЬ текст, вместе со словом NO.
Хелп.
/<\?.*\?>/s
Работает неправильно.
Надо, чтобы из текста вида
<?
TEST
?>
NO
<?
TEST2
?>
он выбирал
<?
TEST
?>
и
<?
TEST
?>
А он выбирает ВЕСЬ текст, вместе со словом NO.
Хелп.
Используй символ жадности:
/<\?(.*?)\?>/s
preg_match_all("#<\?[^<>]*\?>#is", $text, $mas);
suser Входной текст: <? echo '<hr />'; ?> И ваша регулярка не найдет ничего
'#<input[^>]*? name="(.*)"#'
'#<img[^>]*? scr="(.*)"#'
|<input.+?name="(.+?)".*?>|i
|<img.+?src="(.+?)".*?>|i
Есть html код
<li><div class="structHeader"><a href="javascript://" id="plus" onclick="if($(this).html()=='++++') $(this).html('----'); else $(this).html('++++'); toggle('struct1771203'); " >++++</a> Регион</div><ul class="struct" id="struct1771203" style="display:none;"><li><a href="/novator/joomla/index.php?option=com_comprofiler&view=userProfile& user=141">Клюкин Александр Владимирович</a> - Продавец - консультант</li></ul></li></ul></li><li>
Помогите пожалуйста написать регулярку что бы отсечь все незакрытые теги не тронув при этом закрытые .
Доброго,
Помогите вспомнить основы.
Регулярные выражения я разберу, есть откуда почитать. Суть в другом, в самом принципе работы.
Например, когда мы преобразовываем ссылкуwww.yoursite.com/script.php?product=123
к виду www.yoursite.com/cat/product/123/
мы используем выражениеRewriteRule cat/(.*)/(.*)/$ /script.php?$1=$2
Правильно ли понимаю, что изначально мы смотрим и пишем /script.php?$1=$2, то есть вторую часть, изначальную свою ссылку. Затем мы прописываем первую часть cat/(.*)/(.*)/$ и каждая переменная (в нашем случае $1, $2) (последовательно, слева направо?) идет прописываться в каждую круглую скобку? Вот, и какую роль тогда здесь играют регулярные выражения?
Доброго,
Помогите вспомнить основы.
Регулярные выражения я разберу, есть откуда почитать. Суть в другом, в самом принципе работы.
Например, когда мы преобразовываем ссылкуwww.yoursite.com/script.php?product=123
к виду www.yoursite.com/cat/product/123/
мы используем выражениеRewriteRule cat/(.*)/(.*)/$ /script.php?$1=$2
Правильно ли понимаю, что изначально мы смотрим и пишем /script.php?$1=$2, то есть вторую часть, изначальную свою ссылку. Затем мы прописываем первую часть cat/(.*)/(.*)/$ и каждая переменная (в нашем случае $1, $2) (последовательно, слева направо?) идет прописываться в каждую круглую скобку? Вот, и какую роль тогда здесь играют регулярные выражения?
Это регулярное выражение говорит нам,что если, было обращение к например:
http://site.com/cat/33/4234/
Аппач автоматически внутри системы сделает перенаправление этого запроса в:
http://site.com//script.php?33=4234
То есть, говорят простыми словами,в первом выражении указываеться маска для запроса,какие запросы обрабатывать, вторым параметром являеться "куда пренаправлять",и там используются уже привычные в regEXP цифровые-переменные.Переменные идут в порядке слева на право.Как пример:
RewriteRule cat/(.*)/(.*)/param/([0-9]+)/$ /cat.php?$1=$2¶ms=$3
Делаем обращение к скрипту:
htto://site.com/cat/A1/B1/param/777/
Мы увидим тоже самое,что и при запросе:
htto://site.com/cat.php?A1=B1¶ms=777
Все просто.
Это регулярное выражение говорит нам,что если, было обращение к например:
http://site.com/cat/33/4234/
Аппач автоматически внутри системы сделает перенаправление этого запроса в:
http://site.com//script.php?33=4234
То есть, говорят простыми словами,в первом выражении указываеться маска для запроса,какие запросы обрабатывать, вторым параметром являеться "куда пренаправлять",и там используются уже привычные в regEXP цифровые-переменные.Переменные идут в порядке слева на право.Как пример:
RewriteRule cat/(.*)/(.*)/param/([0-9]+)/$ /cat.php?$1=$2¶ms=$3
Делаем обращение к скрипту:
htto://site.com/cat/A1/B1/param/777/
Мы увидим тоже самое,что и при запросе:
htto://site.com/cat.php?A1=B1¶ms=777
Все просто.
Благодарю за ответ. Странно вообще-то получается. Я хочу site.com/cat.php?A1=B1¶ms=777 с помощью RewriteRule переименовать в site.com/catalog/firma/obelisk/index.html (просто как пример), а вы говорите что RewriteRule делает абсолютно противоположную задачу. Верно? Как достигнуть моей цели?
Благодарю за ответ. Странно вообще-то получается. Я хочу site.com/cat.php?A1=B1¶ms=777 с помощью RewriteRule переименовать в site.com/catalog/firma/obelisk/index.html (просто как пример), а вы говорите что RewriteRule делает абсолютно противоположную задачу. Верно? Как достигнуть моей цели?
Вы ничего не поняли :(
Гугле->Регулярные выражения PHP
Вы ничего не поняли :(
Гугле->Регулярные выражения PHP
Я понял задом-наперед. Хорошо.
Как мне можно добиться такого результата
Сейчас ссылка index.php?action=company&lang=ru
Мне надо /ru/company.html
Я понял задом-наперед. Хорошо.
Как мне можно добиться такого результата
Сейчас ссылка index.php?action=company&lang=ru
Мне надо /ru/company.html
^([a-zA-Z]+)/(.*)\.html index.php?action=$2&lang=$1
^([a-zA-Z]+)/(.*)\.html index.php?action=$2&lang=$1
[a-zA-Z]+ можно [a-Z]+
А почему первое выражение было [a-zA-Z], а второе (.*)
У меня есть куча select'ов:
<select id='w1'>
option value='1' >1</option>
option value='2' >2</option>
option value='3' >3</option>
</select>
<select id='w2'>
option value='1' >1</option>
option value='2' >2</option>
option value='3' >3</option>
</select>
<select id='w3'>
option value='1' >1</option>
option value='2' >2</option>
option value='3' >3</option>
</select>
Мне нужно получить все option у select'a с id=w2. Это можно сделать одной регуляркой?
wildshaman
04.02.2010, 14:10
Как сделать редирект с любго поддомена на страницы сайта?
к примеру, с 1234.site.ru нa site.ru/1234
при этом поддомены в панельке создавать по условию нельзя и поддомен может быть любым
У меня есть куча select'ов:
<select id='w1'>
option value='1' >1</option>
option value='2' >2</option>
option value='3' >3</option>
</select>
<select id='w2'>
option value='1' >1</option>
option value='2' >2</option>
option value='3' >3</option>
</select>
<select id='w3'>
option value='1' >1</option>
option value='2' >2</option>
option value='3' >3</option>
</select>
Мне нужно получить все option у select'a с id=w2. Это можно сделать одной регуляркой?
$text = "
<select id='w2'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>";
preg_match("#id='w2'>(.*)<\/select>#s", $text, $match);
echo strip_tags($match[1]);
Как сделать редирект с любго поддомена на страницы сайта?
к примеру, с 1234.site.ru нa site.ru/1234
при этом поддомены в панельке создавать по условию нельзя и поддомен может быть любым
В панеле включить "автоподдомены" а будет автоматом делаться именно так.
Или аппаче_хост рулить.
Задача: составить регулярку.
Условие, максимально 4 параметра 10D 10H 10M 10S, но все 4 никогда не встрчаются, обычно не более двух:
а) на пыхе с использование preg_match_all
б) парсим различные результаты, варианты входных данных:
1) 6D 6H
2) 9H 5M
3) 1D 10M
4) 10M 14S
Сами параметры могут быть любыми, от 0 до 59.
Необходимо несмотря из входных данных заполнить массив:
[0] => Array
(
[0] => 6
[1] => ''
[2] => 1
[3] => ''
[1] => Array
[0] => 6
[1] => 9
[2] => ''
[3] => ''
[2] => Array
[0] => ''
[1] => 5
[2] => 10
[3] => 10
[3] => Array
[0] => ''
[1] => ''
[2] => ''
[3] => 14
1й подмассив - D (дни), 2й подмассив - H (часы), 3й подмассив - M (минуты), 4й подмассив - S (секунды)
Есть идеи?
$text = "
<select id='w2'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>";
preg_match("#id='w2'>(.*)<\/select>#s", $text, $match);
echo strip_tags($match[1]);
спасибо кэп! Я имел в виду, что мне нужно получить как value так и само значение между >1<.
<?
$text="<select id='w2'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>";
preg_match("/<select id='w2'>\r\n<option value='([0-9])'>(.*)<\/option>/s", $text, $m);
preg_match("/<select id='w2'>\r\n(<option value='([0-9])'>(.*)<\/option>)/s", $text, $s);
echo "сначала $s[1]<br> вконце $m[2]";
?>
пробуй)
З.Ы. Да,я извращенец
draliokero
07.02.2010, 14:44
Получаю от сервера ответ в виде неполного XML (без заголовка <?xml ... ?>.
Нужно распарсить таким образом: содержимое <input_img> в <img src="..." >, а <description> в <b>...</b> и вывести по порядку, как в XML'е.
Как лучше сделать? Дописать заголовок в начало ( $request = '<?xml version="1.0" encoding="UTF-8"?>'.curl_exec($ch); ) и использовать xml_parser или нечего не записывать и регулярками пройтись? Помогите распарсить.
<?xml version="1.0" encoding="UTF-8"?>
<math>
<variant>
<input_img>dss.localhost.ru/masima/Render.app.php/execute?id=2651267</input_img>
<solve>
<description>5</description>
<answer_img>dss.localhost.ru/masima/Render.app.php/execute?id=1694028</answer_img>
</solve>
<solve>
<description>5</description><answer_img>dss.localhost.ru/masima/Render.app.php/execute?id=1694028</answer_img></solve>
</variant>
</math>
может просто через preg_replace теги заменить?
или я что не так понял?
может просто через preg_replace теги заменить?
или я что не так понял?
Я тоже не совсем догоняю, но попробую предложить:
<?php
$result = '<?xml version="1.0" encoding="UTF-8"?>
<math>
<variant>
<input_img>dss.localhost.ru/masima/Render.app.php/execute?id=2651267</input_img>
<solve>
<description>5</description>
<answer_img>dss.localhost.ru/masima/Render.app.php/execute?id=1694028</answer_img>
</solve>
<solve>
<description>5</description><answer_img>dss.localhost.ru/masima/Render.app.php/execute?id=1694028</answer_img></solve>
</variant>
</math>';
$result = preg_replace('#<input_img>(.*?)<\/input_img>#', '<img src="\\1" >', $result);
$result = preg_replace('#<description>(.*?)<\/description>#', '<b>\\1</b>', $result);
echo $result;
?>
draliokero
07.02.2010, 16:42
А можно сделать так, чтобы один массив заполнялся согласно одному рег. выражению:
<description>(.*?)<\/description>|<input_img>(.*?)<\/input_img> ?
preg_match_all вроде, но там многомерный массив получается и повторяются результаты
Убери с регулярки скобки, оставив просто .* тоесть:
preg_match_all('#<description>.*<\/description>|<input_img>.*<\/input_img>#', $where, $matches);
Strilo4ka
если его не экранизировать,то это значит,что шаблон закончен
mailbrush
10.02.2010, 23:13
Strilo4ka
если его не экранизировать,то это значит,что шаблон закончен
Посмотри внимательнее... Шаблон открывается символом "#", тобишь экранировать слеш в этом случае нету потребности. Если бы шаблон начинался "/", то тогда да - экранировать надо.
draliokero
13.02.2010, 20:36
Пишу небольшой математический решатель для мобильных устройств, допускаю, что пользователь в спешке может ошибиться в написании названий функций, например, написать часть на русском, часть транслитом или где-нибудь посередине влепить, символов лишних.
Вроде все работает, но только если в скобках опять напишу, корень с ошибками, то замена внутри скобок не проходит, как исправить?
разобрался
<br/><br/>
1
<br/><br/>
2
<br/><br/>
как вытащить от сюда 2 ??
вот это почему то не работает
preg_match_all('#<br/><br/>[\s\S.*?]+<br/><br/>(\s\S.*?)<br/><br/>#iU',$answer,$count);
felix_
<?php
$answer = "<br/><br/>
1
<br/><br/>
2
<br/><br/>";
preg_match('#<br/><br/>\s+.+\s+<br/><br/>\s+(.+)\s+<br/><br/>#i',$answer,$count);
print_r($count);
?>
draliokero
14.02.2010, 15:45
Помогите, на пред. странице решить мою проблему
felix_, как вариант)
$answer = "<br/><br/>1<br/><br/>2<br/><br/>";
preg_match('#[0-9]<br/><br/>([0-9])#i',$answer,$count);
echo $count[1];
draliokero
А переводы строк сами найдутся?
Здравствуйте знатоки.
Вопрос от телезрителя.
У меня на страничке много <cite> site.ru - </cite>
Нужно отпарсить все URL, (site.ru), и записать их в файл (Запись и т.п. сам сделаю), нужна лишь регулярка, которая это всё вынесет в PHP.
На кону 0 руб, 0 копеек :)
casper-id
14.02.2010, 18:48
Ctacok, присоединяюсь к концерту по заявкам. Кто наваяет подобную регулярку?
preg_match('/<cite>(.*)<\/cite>/i', $text, $m);
echo strip_tags($m[1]);
пока что могу только это предложить
сейчас гляну страницу
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot