- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
<?php
class WikiParser{
private $p;
function __construct($p){
$this->p=$p;
}
function parse(){
$this->p = preg_replace('/\[\[([^\/"?[=|]+?)\]\]/siu', '<a href="link.php?sea=$1">$1</a>', $this->p);
$this->p = preg_replace('/\[\[([^\/"?[=|]+?)\|(.+?)\]\]/siu', '<a href="link.php?sea=$1">$2</a>', $this->p);
$this->p = preg_replace('/\[\[([a-z]+?:\/\/[^"|]*?)\|([^"?[=|]+?)\]\]/siu', '<a href="$1">$2</a>', $this->p);
$this->p = preg_replace('/\[\[([a-z]+?:\/\/[^"|]*?)\]\]/siu', '<a href="$1">$1</a>', $this->p);
$this->p = preg_replace('/<<([^\/"?[=|]+?)>>/siu', '<a href="link.php?sea=$1">$1</a>', $this->p);
$this->p = preg_replace('/<<([^\/"?[=|]+?)\|(.+?)>>/siu', '<a href="link.php?sea=$1">$2</a>', $this->p);
$this->p = preg_replace('/<<([a-z]+?:\/\/[^"|]*?)\|([^"?[=|]+?)>>/siu', '<a href="$1">$2</a>', $this->p);
$this->p = preg_replace('/<<([a-z]+?:\/\/[^"|]*?)>>/siu', '<a href="$1">$1</a>', $this->p);
$this->p = preg_replace('/\*\*\*?([^"?=#%]+?)\*\*\*?/siu', '<b>$1</b>', $this->p);
$this->p = preg_replace('/\-\-\-?([^"?=#%]+?)\-\-\-?/siu', '<s>$1</s>', $this->p);
$this->p = preg_replace('/\/\/\/?([^"?=#%]+?)\/\/\/?/siu', '<i>$1</i>', $this->p);
$this->p = preg_replace('/\r?\n\r?\n/', '</p><p>', $this->p);
$this->p = preg_replace('/\n/', '<br/>', $this->p);
$this->p = preg_replace('/\{\{locked\}\}/', '<table style="clear: both; width: 90%; border-color:#333333; border-style: solid; border-width: 1px 1px 1px 2px; padding: 2px; margin: 1px auto 1px auto; vertical-align: center; background-color: #fefefe; text-align: left;"><tr><td style="vertical-align: middle">Статья огорожена от <a href="link.php?sea=вапераст">ваперастов</a></td></tr></table>', $this->p);
$this->p = preg_replace('/\{\{locked\|(.*?)\}\}/', '<table style="clear: both; width: 90%; border-color:#333333; border-style: solid; border-width: 1px 1px 1px 2px; padding: 2px; margin: 1px auto 1px auto; vertical-align: center; background-color: #fefefe; text-align: left;"><tr><td style="vertical-align: middle">Статья огорожена от $1</td></tr></table>', $this->p);
$this->p = preg_replace('/\{\{недопись\}\}/siu', '<table style="clear: both; width: 90%; border-color:#333333; border-style: solid; border-width: 1px 1px 1px 2px; padding: 2px; margin: 1px auto 1px auto; vertical-align: center; background-color: #fefefe; text-align: left;"><tr><td style="vertical-align: middle"><b>Недопись</b><br>Ваша статья - Гавно. Короткая, тупая и малоинформативная</td></tr></table>', $this->p);
$this->p = preg_replace('/\{\{недопись\|([^|]*?)\}\}/siu', '<table style="clear: both; width: 90%; border-color:#333333; border-style: solid; border-width: 1px 1px 1px 2px; padding: 2px; margin: 1px auto 1px auto; vertical-align: center; background-color: #fefefe; text-align: left;"><tr><td style="vertical-align: middle">Недопись<br>Ваша статья - $1</td></tr></table>', $this->p);
$this->p = preg_replace('/\{\{moved\|(.*?)\}\}/', '<table style="clear: both; width: 90%; border-color:#333333; border-style: solid; border-width: 1px 1px 1px 2px; padding: 2px; margin: 1px auto 1px auto; vertical-align: center; background-color: #fefefe; text-align: left;"><tr><td style="vertical-align: middle"><b>Статья перемещена</b><br>-->$1</td></tr></table>', $this->p);
$this->p = preg_replace('/[[<]#[]>]/', '', $this->p);
if(!preg_match('#^<p>.*</p>$#siu', $this->p)) $this->p='<p>'.$this->p.'</p>';
$this->p = preg_replace('/<p><\/p>/siu', '', $this->p);
}
function get(){return $this->p;}
}
?>
Lure Of Chaos 08.09.2010 18:42 # 0
istem 08.09.2010 18:46 # +2
istem 08.09.2010 18:46 # 0
Анонимус 08.09.2010 20:30 # +2
Всё таки регулярки таят в себе одну бяку. Это очень мощный инструмент, но не без бяки.
А бяка в том, что хомячки решили что продакшен парсеры надо писать на регулярках. Если бы у них не было регулярок -- они бы пыжылись со своими substr, strlen и indexOf (или как там в пхп найти подстроку в строке) и разбив лоб прочитали бы про конечные автоматы, наконец. И узнали бы как надо делать парсеры.
Как я сегодня узнал -- кое-кто пишет парсер для шаблонизатора на регулярках (правда на js).
Ждем компилятора с парсером на регулярках!
Lure Of Chaos 08.09.2010 21:31 # 0
bugmenot 08.09.2010 22:28 # 0
А в уэбэ сама среда не позволяет пользовать их многократно
Lure Of Chaos 08.09.2010 22:36 # 0
startapp 08.09.2010 23:11 # −4
Мистер Хэнки 09.09.2010 16:26 # +3
Анонимус 09.09.2010 15:16 # 0
не в уебе а в пыхах и классических цги
в жабе или дотнете -- не так
bugmenot 09.09.2010 19:29 # 0
в пыхе не должно быть тоже, но почему-то mod_php уже который год делается под apache 1.x
Анонимус 09.09.2010 19:49 # 0
2) mod_php есть для apache 2, хотя и с оговориками (с тредовой моделью)
Вообще после той же жабы это всё напоминает какой-то аццкий геморой.
В жабе (или нете) ты можешь хранить объекты в куче. Тебе не надо сериализовать их в сессию, не надо ходить в мемкешд, не надо ипацо с fast_cgi. Хранишь, и все.
Если тебе надо делать какое-то действие переодически -- тебе не надо вешать это на крон. не надо вызывать по каждому энному заходу. надо просто сделать тред, и делать там что нужно.
Как в нормальном, десктопном приложении.
Я не понимаю реальне как люди на пыхе пишут
Мистер Хэнки 09.09.2010 20:17 # +1
Но ведь у нас в стране принято всё делать дёшево и сердито. Зачем мне (разрабу) воротить портал на JBoss + Spring/Struts + Oracle SQL Server (или подобном - не особо разбираюсь в ворохе j2ee технологий), когда можно состряпать по-бырику на Apache+PHP+MySQL?
Зачем мне (заказчику) арендовать экзотический java-хостинг или вовсе VDS, если можно прикупить мешок шаредов по 2 рубля/пучок?
bugmenot 09.09.2010 20:46 # 0
с точки зрения любви к альтернативной истории, да, интересно, что юзалось бы если не было PHP
bugmenot 09.09.2010 20:35 # 0
в итоге если, допустим, скрипт завершился со статусом 404, то и отдавать соответствующий ErrorDocument придется скрипту, хотя апач о нём знает, и если переделать, заюзав mod_perl, то всё будет работать как наконфигурено
вот такое феерическое говно наш пых
istem 09.09.2010 09:34 # 0
Анонимус 09.09.2010 13:48 # +1
7ion 09.09.2010 00:28 # 0
Молодец, чо.
7ion 09.09.2010 00:29 # 0
Где здесь море?
Может, see?
Stalker 09.09.2010 00:37 # 0
Анонимус 09.09.2010 00:50 # 0
startapp 09.09.2010 01:07 # −2
7ion 09.09.2010 02:35 # +3
Lure Of Chaos 09.09.2010 19:00 # 0
Int 09.09.2010 09:02 # −1
Vasiliy 09.09.2010 11:40 # −2
istem 09.09.2010 12:13 # +1
(...наиценнейший совет...)
HyperGeek 09.09.2010 12:39 # +2
Vasiliy 09.09.2010 12:54 # −4
koodeer 09.09.2010 14:48 # +4
Буква "е" пропущена?..
Lure Of Chaos 09.09.2010 19:03 # 0
istem 09.09.2010 16:59 # +1
http://www.refal.net/~belous/rphprdoc.htm#4.1. Варианты
--
не знаю в чём конкретно у тебя загвоздка...
Vasiliy 10.09.2010 08:19 # −2
Анонимус 09.09.2010 16:49 # +2
Вы риальне хочете для этого учить язык РЕФАЛ?
xXx_totalwar 09.09.2010 16:58 # +2
особенно доставил рефал-5, релизнувшийся в 85м году
Lure Of Chaos 09.09.2010 19:03 # 0
утащил термин себе
xXx_totalwar 09.09.2010 19:07 # 0
Lure Of Chaos 09.09.2010 19:08 # 0
istem 09.09.2010 19:09 # 0
Lure Of Chaos 09.09.2010 19:46 # +1