As Spaced function in UTF-8
{$Namespaced}
, {$Titlespaced}
, {$Groupspaced}
when the website is in UTF-8Questions answered by this recipe
How to fix the broken {$Namespaced}
, {$Titlespaced}
, {$Groupspaced}
when the website is in UTF-8? These useful variables don't work in skins or pagelists, which can be very disappointing.
Note that these fixes are available in PmWiki core as of version 2.2.0-beta30 (2007-02-09), so if you upgrade, your Unicode website should be fine.
See also some other UTF-8 tips.
Description
You can use a custom $AsSpacedFunction
.
In your config.php
or farmconfig.php
add the following code:
# you maybe have also one XLPage() call include_once($FarmD.'/scripts/xlpage-utf-8.php'); # fix a bug in $CaseConversions (for pmwiki-2.2.0-beta16 and older) $CaseConversions["\xc4\xb1"] = "\x49"; $CaseConversions["\xc5\xbf"] = "\x53"; # the new function $AsSpacedFunction = 'AsSpacedUTF'; function AsSpacedUTF($text) { global $CaseConversions; static $lower, $upper; if(!@$CaseConversions) return AsSpaced($text); if (!@$lower) { $lower = implode('|', array_keys($CaseConversions)); $upper = implode('|', array_values($CaseConversions)); } $text = preg_replace("/($lower|\\d)($upper)/", '$1 $2', $text); $text = preg_replace('/(?<![-\\d])(\\d+( |$))/',' $1',$text); return preg_replace("/($upper)(($upper)($lower|\\d))/", '$1 $2', $text); } # A 'Page not found' variable redefined $FmtPV['$RequestedPage'] = 'htmlspecialchars($pagename, ENT_QUOTES)'; # a html header (for buggy browsers or when a page is saved to hdd) $HTMLHeaderFmt['metacontent'] = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
This should make {$Namespaced}
, {$Titlespaced}
and {$Groupspaced}
work in pages, skins and pagelists, and also fix some other inconveniences related to the UTF-8 encoding.
You can vote for this function to be included in the PmWiki Core at PITS.00875.
Other tips
See UTF-8, the section was moved there.