strrev pro UTF řetězce + (další detaily)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
bojovyletoun
Člen | 667
+
0
-

1.

ahoj, divím se, že pořád není funkce strrev pracující s UTF8 v PHP. Bylo by možné ji doplnit do frameworku?
Můj commit

2.

bylo by možné u micropresenteru vyčleninit canolizaci do samotné metody a spouštět ručně v případě potřeby (tedy uvnitř callbacku $presenter->canolize() ) . Není to definitivní, asi je lepší možnost jak to napsat.

3.

Použiji li Route a callback pro druhý argument pro MicroPresentér, pak se blbě definují některá metadata. Např použití FILTER_něco pro nějaký parametr se musí dělat oklikou přes styles.

Route::setStyleProperty("pat", Route::FILTER_IN, function($s){return Nette\Utils\Strings::reverse($s);});
$r[] = new Route('<pat>', function($pat, \NetteModule\MicroPresenter $presenter,$pat)use($cont){...}

Vím že jde o minoritní problém, ale napadá mě to upravit třeba tak, že bude-li nastaven flag Route::Micro, pak se použije callback definovaný v metadata[‚callback‘]. Metadata zustane jako pole a bude dál možno nastavovat filtry atd. Nebo přidat 4. parametr do Route::__construct, což by byl ten callback. je to zpětně kompatibilní obě řešení.

Teda ještě to jde řešit takovouhle oklikou:

// Route:: addstyle,setStyleProperty("#G", Route::FILTER_IN, function($s) {}...
$r[] = new Route('<pat #G>', array(
		'callback' => $cb,
		 Route::MODULE_KEY=>"NEtte",
		 Route::PRESENTER_KEY=>"Micro",
		'pat' => array(Route::PATTERN => "[[:alpha:]0]*"

Editoval bojovyletoun (28. 12. 2011 1:37)

bojovyletoun
Člen | 667
+
0
-

Upraveno: používá UTF-32. Přidán test, kde v testovacím řetězci jsou zastoupeny znaky, jejichž zápis v UTF-8 má od 1 až po 4 znaky.
půl

Editoval bojovyletoun (10. 1. 2012 14:32)

Jan Tvrdík
Nette guru | 2595
+
0
-

Na co vlastně potřebuješ „obracet“ řetězce?

bojovyletoun
Člen | 667
+
0
-

Dělám jeden web o palindromech a před vložením se takhle kontrolují.

David Grudl
Nette Core | 7790
+
0
-

IMHO funkce strrev je ve frameworku naprosto ale naprosto zbytečná, ale neměl bych to srdce tak elegantní implementaci nemergnout :-)