Další metody třídy String
- Tomik
- Nette Evangelist | 485
Co bys říkal na podporu formátování lidského času do stylu „před hodinou“, „přes měsícem“, Davide?
Něco ve smyslu String->humanTime(datetime, int $date)
;
A pak další (možná) užitečná věc by byla formátování měn (tedy podle zvyklostí psaní dané měny), např. 30 Kč a $3.
Zdraví Tomik
- Honza Marek
- Člen | 1664
Nette::Extras? Jakože by se tam založila nová třída ExtraString, která by tohle uměla? Tomu moc nerozumim.
- A.
- Člen | 87
Tomik napsal(a):
A pak další (možná) užitečná věc by byla formátování měn (tedy podle zvyklostí psaní dané měny), např. 30 Kč a $3.
Vyborne funguje money_format, ikdyz Windows uzivatele maji smulu :).
- David Grudl
- Nette Core | 8218
Tohle by asi nemělo (společně s bytes()
) vůbec patřít do
třídy String. Navíc je to závislé ná národním prostředí. Vzhledem
k použití především v šablonách by asi bylo lepší udělat nějaký
helper.
- Tomik
- Nette Evangelist | 485
David Grudl napsal(a):
Tohle by asi nemělo (společně s
bytes()
) vůbec patřít do třídy String. Navíc je to závislé ná národním prostředí. Vzhledem k použití především v šablonách by asi bylo lepší udělat nějaký helper.
Jsem pro udělat nějaký helper pro šablony, tak to také bylo zamýšleno, ale vzhledem k tomu, že jsem to shledal podobné fci String::bytes, tak jsem to přidal jako request pro třídu String, takže pokud by došlo k implementování v šablonách a přidání tam fce bytes a odebrání této ze třídy String, bylo by to ideální.
Jinak dík!
- veena
- Člen | 98
Tomik napsal(a):
Co bys říkal na podporu formátování lidského času do stylu „před hodinou“, „přes měsícem“, Davide?
Něco ve smyslu
String->humanTime(datetime, int $date)
;A pak další (možná) užitečná věc by byla formátování měn (tedy podle zvyklostí psaní dané měny), např. 30 Kč a $3.
Zdraví Tomik
Něco podobnýho jako ten humanTime jsem psal na téma časového intervalu, viz zde:
ale nevím jestli je to „změna času“ friendly.
http://www.martincohen.info/…iewtopic.php?…
Asi bych to taky spíš viděl pro nějaké helpery do šablon.
- romansklenar
- Člen | 655
Honza M. napsal(a):
Nette::Extras? Jakože by se tam založila nová třída ExtraString, která by tohle uměla? Tomu moc nerozumim.
Jod napsal(a):
Skôr ExtraDateTime
Spíše byl myšlen repozitář nette-extras který byl ale později nahrazen wiki stránkou [extras] pro pluginy atd.
- honzajavorek
- Člen | 57
Co do String přidat něco jako…
public static function upperFirst($s) {
return mb_strtoupper(mb_substr($s, 0, 1)) . mb_substr($s, 1);
}
…? Podle mě je to užitečná funkce a v PHP chybí. Je tam jen ucfirst, ne mb_ucfirst. Mě to v nerozšiřitelné třídě String docela chybí a nějaké jiné vhodné místo jsem na to nenašel, tak jsem si tu funkci naprasil někam vedle. Takže kdyby byla přímo ve String, bylo by to super :) .
- ZuseX4
- Člen | 3
littlemaple napsal(a):
Co do String přidat něco jako…
public static function upperFirst($s) { return mb_strtoupper(mb_substr($s, 0, 1)) . mb_substr($s, 1); }
Dalo by se využít toho malého tríčku, který jsem našel v ObjectMixin.php:
Line 187: $name[0] = $name[0] & "\xDF"; // case-sensitive checking, capitalize first character
Docela mě to zaujalo a myslím, že to bude rychlejší než rozdělování řetězce :)
Editoval ZuseX4 (7. 3. 2009 16:40)
- kravčo
- Člen | 721
ZuseX4 napsal(a):
Dalo by se využít toho malého tríčku, který jsem našel v ObjectMixin.php:
Line 187: $name[0] = $name[0] & "\xDF"; // case-sensitive checking, capitalize first character
Docela mě to zaujalo a myslím že to bude rychlejší, než rozdělování řetězce :)
Toto síce veľmi dobre funguje na písmenách v rámci ASCII (a-z, A-Z), no
je to nepoužiteľné na iné znaky v rámci ASCII a už vôbec nie pre iné
znaky vo väčšine známych kódovaní (UTF-8, cp1250, …), keďže sú buď
viacbajtové, alebo neplatí, že 'á' − 'Á' == 0x20
…
David to používa s predpokladom, že má nazvané premenné/funkcie písmenami/podtržítkom v rámci ASCII, pričom PHP umožňuje nazvať premenné/funkcie i znakmi s diakritikou… Ale kto ich tak naozaj nazýva?
// Príklad, kódované v UTF-8
function bravčovéRažniči()
{
echo '300 bravčového mäsa, ...';
}
Hypotetická funkcia String::upperFirst()
by mala pracovať na
akomkoľvek (UTF-8) reťazci, ktorý napríklad vôbec nemusí začínať
písmenom… Predpokladám, že od PHP 5.3 bude možné pokryť všetky
mb_*
funkcie cez __callStatic
.
Editoval kravco (7. 3. 2009 17:03)
- David Grudl
- Nette Core | 8218
Ještě existuje mb_convert_case($str, MB_CASE_TITLE, "UTF-8")
,
které převádí první písmenka všech slov na velké písmena, ostatní
na malá.
- kravčo
- Člen | 721
David Grudl napsal(a):
Ještě existuje
mb_convert_case($str, MB_CASE_TITLE, "UTF-8")
, které převádí první písmenka všech slov na velké písmena, ostatní na malá.
Áno. Žiaľ v spracovaní českých/slovenských textov má oproti
ucfirst()
pramalé využitie… Sám som ju prednedávnom
potreboval a použil som rovnaké riešenie, ako napísal littlemaple.