Autor Zpráva
hondziiikh
Profil *
Tak abych to vysvetlil, mám slovo z $_POST[] a potřebuju to slovo, které mi přijde rozsekat a z každého písmena udělat proměnnou.. Příklad - přijde slovo HONZA => $p1=H; $p2=O; $p3=N; $p4=Z; $p5=A; jedná se o to, že ta písmena se budou vkládat do okýnek na formuláři, který jsou prostě stupidně sestavený... takze tam budou napozicovyné. Děkuji za rady.. :)
Nox
Profil
$p1,$p2,$p3...koukni se na termín "pole proměnných", hezká věc
a dále:
PHP umožnuje nakládat s řetězcem jako s polem bez jakékoliv manipulace (ono obojí k sobě má v základu blízko)

tzn.
$a = "letadlo";
echo $a[2]; // vypíše "t"
imploder
Profil
hondziiikh
Co píše Nox je pravda, ale není to úplně po písmenech, je to po bajtech. Pokud používáš kódování, kde každý znak (písmeno) je vždy jeden bajt, tak není problém tak jakékoliv slovo rozdělit. Takové kódování je pro češtinu ISO-8859-2 nebo Windows-1250. Když ale používáš Unicode (UTF-8), tak tam tohle neplatí a např. písmena s diakritikou mají 2 bajty, některé jiné znaky i víc.
hondziiikh
Profil *
trefa do černého, používám UTF8.. :( a v tomto právě potřebuju poradit
imploder
Profil
<?php
$text = "hasdhasdusdjýáíýáč";
$znaku = mb_strlen($text);
for($i=0; $i<$znaku; $i++) $prom[$i] = mb_substr($text, $i, 1, "utf-8");
?>
hondziiikh
Profil *
12345 <?php$text = "hasdhasdusdjýáíýáč";$znaku = mb_strlen($text);for($i=0; $i<$znaku; $i++) $prom[$i] = mb_substr($text, $i, 1, "utf-8");?>
Jestli tomu rozumim, tak by toto mělo výsledně fungovat(ale nefunguje :) ) po napsání
<?php echo $prom1; echo $prom2; ?>
by to mělo vypsat ha Je to tak? A teď proč to nejde..
Nox
Profil
imploder
J, pravda, chybka

hondziiikh
$p1,$p2,$p3...koukni se na termín "pole proměnných", hezká věc
=>
echo $prom[0]; echo $prom[1]
hondziiikh
Profil *
Jop... to je ono :) hranaty zavorky, no dobrý už to funguje :) jen to ještě doupravím, aby mi to echovalo automaticky, podle počtu písmen a budu maximálně happy :) ale to bych už měl zmáknout :) Velice děkuji za spolupráci.
imploder
Profil
hondziiikh
for($i=0; isset($prom[$i]); $i++) echo $prom[$i]."\n";


Každý znak vypíše na jeden řádek. Počet znaků (v Unicodu může být větší než počet bajtů) jde zjistit taky mb_strlen(). Když už máš ty znaky po jednom v poli, tak můžeš vypisování místo toho zarazit před první nedefinovanou proměnnou v tom poli (podmínka isset($prom[$i]) ve foru).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: