OSDN Git Service

PKWK_UPDATE_ EXEC => PKWK_UPDATE_EXEC
[pukiwiki/pukiwiki.git] / pukiwiki.ini.php
1 <?php
2 // PukiWiki - Yet another WikiWikiWeb clone
3 // $Id: pukiwiki.ini.php,v 1.134 2006/05/05 10:37:12 henoheno Exp $
4 // Copyright (C)
5 //   2002-2006 PukiWiki Developers Team
6 //   2001-2002 Originally written by yu-ji
7 // License: GPL v2 or (at your option) any later version
8 //
9 // PukiWiki main setting file
10
11 /////////////////////////////////////////////////
12 // Functionality settings
13
14 // PKWK_OPTIMISE - Ignore verbose but understandable checking and warning
15 //   If you end testing this PukiWiki, set '1'.
16 //   If you feel in trouble about this PukiWiki, set '0'.
17 if (! defined('PKWK_OPTIMISE'))
18         define('PKWK_OPTIMISE', 0);
19
20 /////////////////////////////////////////////////
21 // Security settings
22
23 // PKWK_READONLY - Prohibits editing and maintain via WWW
24 //   NOTE: Counter-related functions will work now (counter, attach count, etc)
25 if (! defined('PKWK_READONLY'))
26         define('PKWK_READONLY', 0); // 0 or 1
27
28 // PKWK_SAFE_MODE - Prohibits some unsafe(but compatible) functions 
29 if (! defined('PKWK_SAFE_MODE'))
30         define('PKWK_SAFE_MODE', 0);
31
32 // PKWK_DISABLE_INLINE_IMAGE_FROM_URI - Disallow using inline-image-tag for URIs
33 //   Inline-image-tag for URIs may allow leakage of Wiki readers' information
34 //   (in short, 'Web bug') or external malicious CGI (looks like an image's URL)
35 //   attack to Wiki readers, but easy way to show images.
36 if (! defined('PKWK_DISABLE_INLINE_IMAGE_FROM_URI'))
37         define('PKWK_DISABLE_INLINE_IMAGE_FROM_URI', 0);
38
39 // PKWK_QUERY_STRING_MAX
40 //   Max length of GET method, prohibits some worm attack ASAP
41 //   NOTE: Keep (page-name + attach-file-name) <= PKWK_QUERY_STRING_MAX
42 define('PKWK_QUERY_STRING_MAX', 640); // Bytes, 0 = OFF
43
44 /////////////////////////////////////////////////
45 // Experimental features
46
47 // Multiline plugin hack (See BugTrack2/84)
48 // EXAMPLE(with a known BUG):
49 //   #plugin(args1,args2,...,argsN){{
50 //   argsN+1
51 //   argsN+1
52 //   #memo(foo)
53 //   argsN+1
54 //   }}
55 //   #memo(This makes '#memo(foo)' to this)
56 define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 1); // 1 = Disabled
57
58 /////////////////////////////////////////////////
59 // Language / Encoding settings
60
61 // LANG - Internal content encoding ('en', 'ja', or ...)
62 define('LANG', 'ja');
63
64 // UI_LANG - Content encoding for buttons, menus,  etc
65 define('UI_LANG', LANG); // 'en' for Internationalized wikisite
66
67 /////////////////////////////////////////////////
68 // Directory settings I (ended with '/', permission '777')
69
70 // You may hide these directories (from web browsers)
71 // by setting DATA_HOME at index.php.
72
73 define('DATA_DIR',      DATA_HOME . 'wiki/'     ); // Latest wiki texts
74 define('DIFF_DIR',      DATA_HOME . 'diff/'     ); // Latest diffs
75 define('BACKUP_DIR',    DATA_HOME . 'backup/'   ); // Backups
76 define('CACHE_DIR',     DATA_HOME . 'cache/'    ); // Some sort of caches
77 define('UPLOAD_DIR',    DATA_HOME . 'attach/'   ); // Attached files and logs
78 define('COUNTER_DIR',   DATA_HOME . 'counter/'  ); // Counter plugin's counts
79 define('TRACKBACK_DIR', DATA_HOME . 'trackback/'); // TrackBack logs
80 define('PLUGIN_DIR',    DATA_HOME . 'plugin/'   ); // Plugin directory
81
82 /////////////////////////////////////////////////
83 // Directory settings II (ended with '/')
84
85 // Skins / Stylesheets
86 define('SKIN_DIR', 'skin/');
87 // Skin files (SKIN_DIR/*.skin.php) are needed at
88 // ./DATAHOME/SKIN_DIR from index.php, but
89 // CSSs(*.css) and JavaScripts(*.js) are needed at
90 // ./SKIN_DIR from index.php.
91
92 // Static image files
93 define('IMAGE_DIR', 'image/');
94 // Keep this directory shown via web browsers like
95 // ./IMAGE_DIR from index.php.
96
97 /////////////////////////////////////////////////
98 // Local time setting
99
100 switch (LANG) { // or specifiy one
101 case 'ja':
102         define('ZONE', 'JST');
103         define('ZONETIME', 9 * 3600); // JST = GMT + 9
104         break;
105 default  :
106         define('ZONE', 'GMT');
107         define('ZONETIME', 0);
108         break;
109 }
110
111 /////////////////////////////////////////////////
112 // Title of your Wikisite (Name this)
113 // Also used as RSS feed's channel name etc
114 $page_title = 'PukiWiki';
115
116 // Specify PukiWiki URL (default: auto)
117 //$script = 'http://example.com/pukiwiki/';
118
119 // Shorten $script: Cut its file name (default: not cut)
120 //$script_directory_index = 'index.php';
121
122 // Site admin's name (CHANGE THIS)
123 $modifier = 'anonymous';
124
125 // Site admin's Web page (CHANGE THIS)
126 $modifierlink = 'http://pukiwiki.example.com/';
127
128 // Default page name
129 $defaultpage  = 'FrontPage';     // Top / Default page
130 $whatsnew     = 'RecentChanges'; // Modified page list
131 $whatsdeleted = 'RecentDeleted'; // Removeed page list
132 $interwiki    = 'InterWikiName'; // Set InterWiki definition here
133 $menubar      = 'MenuBar';       // Menu
134
135 /////////////////////////////////////////////////
136 // Change default Document Type Definition
137
138 // Some web browser's bug, and / or Java apprets may needs not-Strict DTD.
139 // Some plugin (e.g. paint) set this PKWK_DTD_XHTML_1_0_TRANSITIONAL.
140
141 //$pkwk_dtd = PKWK_DTD_XHTML_1_1; // Default
142 //$pkwk_dtd = PKWK_DTD_XHTML_1_0_STRICT;
143 //$pkwk_dtd = PKWK_DTD_XHTML_1_0_TRANSITIONAL;
144 //$pkwk_dtd = PKWK_DTD_HTML_4_01_STRICT;
145 //$pkwk_dtd = PKWK_DTD_HTML_4_01_TRANSITIONAL;
146
147 /////////////////////////////////////////////////
148 // Always output "nofollow,noindex" attribute
149
150 $nofollow = 0; // 1 = Try hiding from search engines
151
152 /////////////////////////////////////////////////
153
154 // PKWK_ALLOW_JAVASCRIPT - Allow / Prohibit using JavaScript
155 define('PKWK_ALLOW_JAVASCRIPT', 0);
156
157 /////////////////////////////////////////////////
158 // TrackBack feature
159
160 // Enable Trackback
161 $trackback = 0;
162
163 // Show trackbacks with an another window (using JavaScript)
164 $trackback_javascript = 0;
165
166 /////////////////////////////////////////////////
167 // Referer list feature
168 $referer = 0;
169
170 /////////////////////////////////////////////////
171 // _Disable_ WikiName auto-linking
172 $nowikiname = 0;
173
174 /////////////////////////////////////////////////
175 // AutoLink feature
176
177 // AutoLink minimum length of page name
178 $autolink = 8; // Bytes, 0 = OFF
179
180 /////////////////////////////////////////////////
181 // Enable Freeze / Unfreeze feature
182 $function_freeze = 1;
183
184 /////////////////////////////////////////////////
185 // Allow to use 'Do not change timestamp' checkbox
186 // (0:Disable, 1:For everyone,  2:Only for the administrator)
187 $notimeupdate = 1;
188
189 /////////////////////////////////////////////////
190 // Admin password for this Wikisite
191
192 // Default: always fail
193 $adminpass = '{x-php-md5}!2e3f7c23072177ca348c8720ec676949';
194
195 // Sample:
196 //$adminpass = '{x-php-md5}1a1dc91c907325c69271ddf0c944bc72'; // md5('pass')
197 //$adminpass = '{CRYPT}$1$AR.Gk94x$uCe8fUUGMfxAPH83psCZG/'; // CRYPT 'pass'
198 //$adminpass = '{MD5}Gh3JHJBzJcaScd3wyUS8cg==';             // MD5   'pass'
199 //$adminpass = '{SMD5}o7lTdtHFJDqxFOVX09C8QnlmYmZnd2Qx';    // SMD5  'pass'
200
201 /////////////////////////////////////////////////
202 // Page-reading feature settings
203 // (Automatically creating pronounce datas, for Kanji-included page names,
204 //  to show sorted page-list correctly)
205
206 // Enable page-reading feature by calling ChaSen or KAKASHI command
207 // (1:Enable, 0:Disable)
208 $pagereading_enable = 0;
209
210 // Specify converter as ChaSen('chasen') or KAKASI('kakasi') or None('none')
211 $pagereading_kanji2kana_converter = 'none';
212
213 // Specify Kanji encoding to pass data between PukiWiki and the converter
214 $pagereading_kanji2kana_encoding = 'EUC'; // Default for Unix
215 //$pagereading_kanji2kana_encoding = 'SJIS'; // Default for Windows
216
217 // Absolute path of the converter (ChaSen)
218 $pagereading_chasen_path = '/usr/local/bin/chasen';
219 //$pagereading_chasen_path = 'c:\progra~1\chasen21\chasen.exe';
220
221 // Absolute path of the converter (KAKASI)
222 $pagereading_kakasi_path = '/usr/local/bin/kakasi';
223 //$pagereading_kakasi_path = 'c:\kakasi\bin\kakasi.exe';
224
225 // Page name contains pronounce data (written by the converter)
226 $pagereading_config_page = ':config/PageReading';
227
228 // Page name of default pronouncing dictionary, used when converter = 'none'
229 $pagereading_config_dict = ':config/PageReading/dict';
230
231 /////////////////////////////////////////////////
232 // User definition
233 $auth_users = array(
234         'foo'   => 'foo_passwd', // Cleartext
235         'bar'   => '{x-php-md5}f53ae779077e987718cc285b14dfbe86', // md5('bar_passwd')
236         'hoge'  => '{SMD5}OzJo/boHwM4q5R+g7LCOx2xGMkFKRVEx', // SMD5 'hoge_passwd'
237 );
238
239 /////////////////////////////////////////////////
240 // Authentication method
241
242 $auth_method_type = 'contents'; // By Page contents
243 //$auth_method_type = 'pagename';       // By Page name
244
245 /////////////////////////////////////////////////
246 // Read auth (0:Disable, 1:Enable)
247 $read_auth = 0;
248
249 // Read auth regex
250 $read_auth_pages = array(
251         '#¤Ò¤­¤³¤â¤ë¤Û¤²#'      => 'hoge',
252         '#(¥Í¥¿¥Ð¥ì|¤Í¤¿¤Ð¤ì)#' => 'foo,bar,hoge',
253 );
254
255 /////////////////////////////////////////////////
256 // Edit auth (0:Disable, 1:Enable)
257 $edit_auth = 0;
258
259 // Edit auth regex
260 $edit_auth_pages = array(
261         '#Bar¤Î¸ø³«Æüµ­#'       => 'bar',
262         '#¤Ò¤­¤³¤â¤ë¤Û¤²#'      => 'hoge',
263         '#(¥Í¥¿¥Ð¥ì|¤Í¤¿¤Ð¤ì)#' => 'foo,bar,hoge',
264 );
265
266 /////////////////////////////////////////////////
267 // Search auth
268 // 0: Disabled (Search read-prohibited page contents)
269 // 1: Enabled  (Search only permitted pages for the user)
270 $search_auth = 0;
271
272 /////////////////////////////////////////////////
273 // $whatsnew: Max number of RecentChanges
274 $maxshow = 60;
275
276 // $whatsdeleted: Max number of RecentDeleted
277 // (0 = Disabled)
278 $maxshow_deleted = 60;
279
280 /////////////////////////////////////////////////
281 // Page names can't be edit via PukiWiki
282 $cantedit = array( $whatsnew, $whatsdeleted );
283
284 /////////////////////////////////////////////////
285 // HTTP: Output Last-Modified header
286 $lastmod = 0;
287
288 /////////////////////////////////////////////////
289 // Date format
290 $date_format = 'Y-m-d';
291
292 // Time format
293 $time_format = 'H:i:s';
294
295 /////////////////////////////////////////////////
296 // Max number of RSS feed
297 $rss_max = 15;
298
299 /////////////////////////////////////////////////
300 // Backup related settings
301
302 // Enable backup
303 $do_backup = 1;
304
305 // When a page had been removed, remove its backup too?
306 $del_backup = 0;
307
308 // Bacukp interval and generation
309 $cycle  =   3; // Wait N hours between backup (0 = no wait)
310 $maxage = 120; // Stock latest N backups
311
312 // NOTE: $cycle x $maxage / 24 = Minimum days to lost your data
313 //          3   x   120   / 24 = 15
314
315 // Splitter of backup data (NOTE: Too dangerous to change)
316 define('PKWK_SPLITTER', '>>>>>>>>>>');
317
318 /////////////////////////////////////////////////
319 // Command execution per update
320
321 define('PKWK_UPDATE_EXEC', '');
322
323 // Sample: Namazu (Search engine)
324 //$target     = '/var/www/wiki/';
325 //$mknmz      = '/usr/bin/mknmz';
326 //$output_dir = '/var/lib/namazu/index/';
327 //define('PKWK_UPDATE_EXEC',
328 //      $mknmz . ' --media-type=text/pukiwiki' .
329 //      ' -O ' . $output_dir . ' -L ja -c -K ' . $target);
330
331 /////////////////////////////////////////////////
332 // HTTP proxy setting (for TrackBack etc)
333
334 // Use HTTP proxy server to get remote data
335 $use_proxy = 0;
336
337 $proxy_host = 'proxy.example.com';
338 $proxy_port = 8080;
339
340 // Do Basic authentication
341 $need_proxy_auth = 0;
342 $proxy_auth_user = 'username';
343 $proxy_auth_pass = 'password';
344
345 // Hosts that proxy server will not be needed
346 $no_proxy = array(
347         'localhost',    // localhost
348         '127.0.0.0/8',  // loopback
349 //      '10.0.0.0/8'    // private class A
350 //      '172.16.0.0/12' // private class B
351 //      '192.168.0.0/16'        // private class C
352 //      'no-proxy.com',
353 );
354
355 ////////////////////////////////////////////////
356 // Mail related settings
357
358 // Send mail per update of pages
359 $notify = 0;
360
361 // Send diff only
362 $notify_diff_only = 1;
363
364 // SMTP server (Windows only. Usually specified at php.ini)
365 $smtp_server = 'localhost';
366
367 // Mail recipient (To:) and sender (From:)
368 $notify_to   = 'to@example.com';        // To:
369 $notify_from = 'from@example.com';      // From:
370
371 // Subject: ($page = Page name wll be replaced)
372 $notify_subject = '[PukiWiki] $page';
373
374 // Mail header
375 // NOTE: Multiple items must be divided by "\r\n", not "\n".
376 $notify_header = '';
377
378 /////////////////////////////////////////////////
379 // Mail: POP / APOP Before SMTP
380
381 // Do POP/APOP authentication before send mail
382 $smtp_auth = 0;
383
384 $pop_server = 'localhost';
385 $pop_port   = 110;
386 $pop_userid = '';
387 $pop_passwd = '';
388
389 // Use APOP instead of POP (If server uses)
390 //   Default = Auto (Use APOP if possible)
391 //   1       = Always use APOP
392 //   0       = Always use POP
393 // $pop_auth_use_apop = 1;
394
395 /////////////////////////////////////////////////
396 // Ignore list
397
398 // Regex of ignore pages
399 $non_list = '^\:';
400
401 // Search ignored pages
402 $search_non_list = 1;
403
404 /////////////////////////////////////////////////
405 // Template setting
406
407 $auto_template_func = 1;
408 $auto_template_rules = array(
409         '((.+)\/([^\/]+))' => '\2/template'
410 );
411
412 /////////////////////////////////////////////////
413 // Automatically add fixed heading anchor
414 $fixed_heading_anchor = 1;
415
416 /////////////////////////////////////////////////
417 // Remove the first spaces from Preformatted text
418 $preformat_ltrim = 1;
419
420 /////////////////////////////////////////////////
421 // Convert linebreaks into <br />
422 $line_break = 0;
423
424 /////////////////////////////////////////////////
425 // Use date-time rules (See rules.ini.php)
426 $usedatetime = 1;
427
428 /////////////////////////////////////////////////
429 // User-Agent settings
430 //
431 // If you want to ignore embedded browsers for rich-content-wikisite,
432 // remove (or comment-out) all 'keitai' settings.
433 //
434 // If you want to to ignore desktop-PC browsers for simple wikisite,
435 // copy keitai.ini.php to default.ini.php and customize it.
436
437 $agents = array(
438 // pattern: A regular-expression that matches device(browser)'s name and version
439 // profile: A group of browsers
440
441     // Embedded browsers (Rich-clients for PukiWiki)
442
443         // Windows CE (Microsoft(R) Internet Explorer 5.5 for Windows(R) CE)
444         // Sample: "Mozilla/4.0 (compatible; MSIE 5.5; Windows CE; sigmarion3)" (sigmarion, Hand-held PC)
445         array('pattern'=>'#\b(?:MSIE [5-9]).*\b(Windows CE)\b#', 'profile'=>'default'),
446
447         // ACCESS "NetFront" / "Compact NetFront" and thier OEM, expects to be "Mozilla/4.0"
448         // Sample: "Mozilla/4.0 (PS2; PlayStation BB Navigator 1.0) NetFront/3.0" (PlayStation BB Navigator, for SONY PlayStation 2)
449         // Sample: "Mozilla/4.0 (PDA; PalmOS/sony/model crdb/Revision:1.1.19) NetFront/3.0" (SONY Clie series)
450         // Sample: "Mozilla/4.0 (PDA; SL-A300/1.0,Embedix/Qtopia/1.1.0) NetFront/3.0" (SHARP Zaurus)
451         array('pattern'=>'#^(?:Mozilla/4).*\b(NetFront)/([0-9\.]+)#',   'profile'=>'default'),
452
453     // Embedded browsers (Non-rich)
454
455         // Windows CE (the others)
456         // Sample: "Mozilla/2.0 (compatible; MSIE 3.02; Windows CE; 240x320 )" (GFORT, NTT DoCoMo)
457         array('pattern'=>'#\b(Windows CE)\b#', 'profile'=>'keitai'),
458
459         // ACCESS "NetFront" / "Compact NetFront" and thier OEM
460         // Sample: "Mozilla/3.0 (AveFront/2.6)" ("SUNTAC OnlineStation", USB-Modem for PlayStation 2)
461         // Sample: "Mozilla/3.0(DDIPOCKET;JRC/AH-J3001V,AH-J3002V/1.0/0100/c50)CNF/2.0" (DDI Pocket: AirH" Phone by JRC)
462         array('pattern'=>'#\b(NetFront)/([0-9\.]+)#',   'profile'=>'keitai'),
463         array('pattern'=>'#\b(CNF)/([0-9\.]+)#',        'profile'=>'keitai'),
464         array('pattern'=>'#\b(AveFront)/([0-9\.]+)#',   'profile'=>'keitai'),
465         array('pattern'=>'#\b(AVE-Front)/([0-9\.]+)#',  'profile'=>'keitai'), // The same?
466
467         // NTT-DoCoMo, i-mode (embeded Compact NetFront) and FOMA (embedded NetFront) phones
468         // Sample: "DoCoMo/1.0/F501i", "DoCoMo/1.0/N504i/c10/TB/serXXXX" // c°Ê¹ß¤Ï²ÄÊÑ
469         // Sample: "DoCoMo/2.0 MST_v_SH2101V(c100;TB;W22H12;serXXXX;iccxxxx)" // ()¤ÎÃæ¤Ï²ÄÊÑ
470         array('pattern'=>'#^(DoCoMo)/([0-9\.]+)#',      'profile'=>'keitai'),
471
472         // Vodafone's embedded browser
473         // Sample: "J-PHONE/2.0/J-T03"  // 2.0¤Ï"¥Ö¥é¥¦¥¶¤Î"¥Ð¡¼¥¸¥ç¥ó
474         // Sample: "J-PHONE/4.0/J-SH51/SNxxxx SH/0001a Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.1.0"
475         array('pattern'=>'#^(J-PHONE)/([0-9\.]+)#',     'profile'=>'keitai'),
476
477         // Openwave(R) Mobile Browser (EZweb, WAP phone, etc)
478         // Sample: "OPWV-SDK/62K UP.Browser/6.2.0.5.136 (GUI) MMP/2.0"
479         array('pattern'=>'#\b(UP\.Browser)/([0-9\.]+)#',        'profile'=>'keitai'),
480
481         // Opera, dressing up as other embedded browsers
482         // Sample: "Mozilla/3.0(DDIPOCKET;KYOCERA/AH-K3001V/1.4.1.67.000000/0.1/C100) Opera 7.0" (Like CNF at 'keitai'-mode)
483         array('pattern'=>'#\b(?:DDIPOCKET|WILLCOM)\b.+\b(Opera) ([0-9\.]+)\b#', 'profile'=>'keitai'),
484
485         // Planetweb http://www.planetweb.com/
486         // Sample: "Mozilla/3.0 (Planetweb/v1.07 Build 141; SPS JP)" ("EGBROWSER", Web browser for PlayStation 2)
487         array('pattern'=>'#\b(Planetweb)/v([0-9\.]+)#', 'profile'=>'keitai'),
488
489         // DreamPassport, Web browser for SEGA DreamCast
490         // Sample: "Mozilla/3.0 (DreamPassport/3.0)"
491         array('pattern'=>'#\b(DreamPassport)/([0-9\.]+)#',      'profile'=>'keitai'),
492
493         // Palm "Web Pro" http://www.palmone.com/us/support/accessories/webpro/
494         // Sample: "Mozilla/4.76 [en] (PalmOS; U; WebPro)"
495         array('pattern'=>'#\b(WebPro)\b#',      'profile'=>'keitai'),
496
497         // ilinx "Palmscape" / "Xiino" http://www.ilinx.co.jp/
498         // Sample: "Xiino/2.1SJ [ja] (v. 4.1; 153x130; c16/d)"
499         array('pattern'=>'#^(Palmscape)/([0-9\.]+)#',   'profile'=>'keitai'),
500         array('pattern'=>'#^(Xiino)/([0-9\.]+)#',       'profile'=>'keitai'),
501
502         // SHARP PDA Browser (SHARP Zaurus)
503         // Sample: "sharp pda browser/6.1[ja](MI-E1/1.0) "
504         array('pattern'=>'#^(sharp [a-z]+ browser)/([0-9\.]+)#',        'profile'=>'keitai'),
505
506         // WebTV
507         array('pattern'=>'#^(WebTV)/([0-9\.]+)#',       'profile'=>'keitai'),
508
509     // Desktop-PC browsers
510
511         // Opera (for desktop PC, not embedded) -- See BugTrack/743 for detail
512         // NOTE: Keep this pattern above MSIE and Mozilla
513         // Sample: "Opera/7.0 (OS; U)" (not disguise)
514         // Sample: "Mozilla/4.0 (compatible; MSIE 5.0; OS) Opera 6.0" (disguise)
515         array('pattern'=>'#\b(Opera)[/ ]([0-9\.]+)\b#', 'profile'=>'default'),
516
517         // MSIE: Microsoft Internet Explorer (or something disguised as MSIE)
518         // Sample: "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
519         array('pattern'=>'#\b(MSIE) ([0-9\.]+)\b#',     'profile'=>'default'),
520
521         // Mozilla Firefox
522         // NOTE: Keep this pattern above Mozilla
523         // Sample: "Mozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:1.7) Gecko/20040803 Firefox/0.9.3"
524         array('pattern'=>'#\b(Firefox)/([0-9\.]+)\b#',  'profile'=>'default'),
525
526         // Loose default: Including something Mozilla
527         array('pattern'=>'#^([a-zA-z0-9 ]+)/([0-9\.]+)\b#',     'profile'=>'default'),
528
529         array('pattern'=>'#^#', 'profile'=>'default'),  // Sentinel
530 );
531 ?>