Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP - převod názvů

Zdravím, poradil by prosím někdo, jak udělat jednodušee v PHP převod takových názvů abych nemusel vytvářet zbytečně pole a identifikovat je podle klíčů?

kolo -> Kolo
velke-cervene-auto -> VelkeCerveneAuto
male-auto -> MaleAuto

Děkuji za pomoc.

Předmět Autor Datum
nieco taketo. netestovane, pisane z hlavy. <?php $premenna = "male-auto"; $pole = array(); $pole =…
wam_Spider007 11.11.2014 08:32
wam_Spider007
alebo lepsie - bez cyklu a podobnych blbosti: $premenna = "velke-cervene-auto"; echo preg_replace('…
wam_Spider007 11.11.2014 08:40
wam_Spider007
Ale je tam stejně nějaká chyba, vrací to \uvelke\ucervene\uauto místo VelkeCerveneAuto :.(
Martin Škaredý 11.11.2014 14:24
Martin Škaredý
Díky chlapy za pomoc. Příznám se, že se před těmi co ovládají reg. výrazi hluboce klaním, nechápu ja…
Martin Škaredý 11.11.2014 14:19
Martin Škaredý
Regulární výrazy logiku mají a naučit se dají. Průšvih je v tom, že syntaxe není v každém prostředí…
hynajs 11.11.2014 14:43
hynajs
Tak asi jak kdo, já tohle fakt nikdy nedám ?-( a vydíš tam tu chybu? echo preg_replace('/(^|-)([a-…
Martin Škaredý 11.11.2014 14:48
Martin Škaredý
chyba je v tom, ze som pouzil \u co je bezny zapis v regexe. Bohuzial PHP to akosi ignoruje. Takze p…
wam_Spider007 11.11.2014 22:50
wam_Spider007
Podle mně \u vůbec v PHP není. Aspoň v dokumentaci nic nemohu najít.
hynajs 11.11.2014 23:19
hynajs
function prevod($retez) { $expl_retez=explode("-",$retez); $vysledek="";$delka=count($expl_retez); f…
hynajs 11.11.2014 08:43
hynajs
Buď takto: echo preg_replace('/(?:^|-)([a-z])/e', 'strtoupper("$1")', $premenna); Alebo takto: ec…
los 11.11.2014 14:56
los
Díky moc, použil jsem na konec tohle a funguje super echo preg_replace('/(?:^|-)([a-z])/e', 'strtou…
Martin Škaredý 21.11.2014 17:16
Martin Škaredý
Napr.: echo preg_replace('/(^|-)([a-z])/ie', 'strtoupper("$1" == "-" ? "_$2" : "$2")', $premenna); poslední
los 21.11.2014 17:27
los

nieco taketo. netestovane, pisane z hlavy.

<?php
$premenna = "male-auto";
$pole = array();
$pole = explode('-', $premenna);

for ($i = 0; $i < count($pole); $i++) {
$pole[$i] = preg_replace('/([a-zA-Z0-9])(.*)/', '\u$1$2', $pole[$i]);
}
implode($pole);
?>
function prevod($retez) {
   $expl_retez=explode("-",$retez);
   $vysledek="";$delka=count($expl_retez);
   for ($l=0;$l<$delka;$l++) { vysledek.=strtoupper(substr($expl_retez[$l],0,1)).substr($expl_retez[$l],1,strlen($expl_retez[$l])-1);}
   return $vysledek;
}

Pokud v retězci budou i české znaky, použij mb_strtoupper a mb_substr a nezapomeň zadat kódování (např. "utf-8").

Díky moc, použil jsem na konec tohle a funguje super

echo preg_replace('/(?:^|-)([a-z])/e', 'strtoupper("$1")', $premenna);

Snažím se tam dostat podtržítko, abych získal takový výsledek

kolo -> Kolo
male-auto -> Male_Auto
velke-cervene-auto -> Velke_Cervene_Auto

ale vůbec mi to nejde :-/ Můžeš mi prosím ještě poradit? Ale i tak velké díky všem za pomoc.
PS: nevím jak funguje preg_replace(), ale kdyby s tím byl problém, stačilo by mi to i takto

kolo -> Kolo_
male-auto -> Male_Auto_
velke-cervene-auto -> Velke_Cervene_Auto_

Zpět do poradny Odpovědět na původní otázku Nahoru