| Autor | Zpráva | ||
|---|---|---|---|
| Poleno Profil * |
#1 · Zasláno: 16. 9. 2009, 22:00:02
Dobrý den,
Potřebuji funkci, která bude rozdělovat slova delší než 18 znaků na několik slov (každé vždy po 18 znacích) TZN: Mám slovo ahojjajsemdlouheslovoamamspoustuznakuprotosepotrebujurozdelit a ja vzdy za 18. znak vlozim mezeru, takze vznikne: ahojjajsemdlouhesl ovoamamspoustuznak uprotosepotrebujuro zdelit Jak tohle udělat? Mohla by na to existovat nějaká funkce podobná funkci explode (tzn třeba rozdel(18, $text) ) Neví, někdo jestli taková funkce existuje? Nebo jde to vyřešit i jiným elegantním způsobem? Díky všem za rady ;-) |
||
| tiso Profil |
#2 · Zasláno: 16. 9. 2009, 22:27:42
|
||
| imploder Profil |
#3 · Zasláno: 16. 9. 2009, 22:53:43
<?php
function rozdel($slovo, $delka_casti) {
$delka = mb_strlen($slovo);
$znak = 0; $cast = 0;
while($znak<$delka) {
if($znak+$delka_casti < $delka-1) {
$casti[$cast] = mb_substr($slovo, $znak, $delka_casti); $cast++;
$znak = $znak + $delka_casti;
}
else {
$casti[$cast] = mb_substr($slovo, $znak); $cast++;
break;
}
}
return $casti;
}
// takto to funguje
$r = rozdel('ahojjajsemdlouheslovoamamspoustuznakuprotosepotrebujurozdelit', 18);
print_r($r);
// takto to bude fungovat stejně i s diakritikou, pokud uložíš soubor v kódování UTF-8
mb_internal_encoding("UTF-8");
$r = rozdel('ahojjájsemdlouhéslovoamámspoustuznakůprotosepotřebujurozdělit', 18);
print_r($r);
?>
|
||
|
Časová prodleva: 2 měsíce
|
|||
| PetrPN Profil |
#4 · Zasláno: 19. 11. 2009, 14:37:43
function rozdel_slova($text,$pocet_pismen)
{
global $celek;
$slovo = Split("[[:blank:]]+", $text);
for($y=0;$y<Count($slovo);$y++):
$slovo[$y] = Trim($slovo[$y]);
if (Strlen($slovo[$y])<=$pocet_pismen):
$celek .= $slovo[$y] . " ";
else:
$delit = Ceil(StrLen($slovo[$y])/$pocet_pismen);
for($z=0;$z<$delit;$z++):
$cast = Substr($slovo[$y], $z*$pocet_pismen, $pocet_pismen);
$celek .= $cast . " ";
endfor;
endif;
endfor;
$text = $celek;
return $text;
}Co tadyto.. Petr |
||
| Majkl578 Profil |
#5 · Zasláno: 19. 11. 2009, 14:46:27 · Upravil/a: Majkl578
Takhle:
$data = 'ahojjajsemdlouheslovoamamspoustuznakuprotosepotrebujurozdelit ';
$data = preg_replace('~(.{18})(.*)~Uu', '$1 $2', $data);
echo $data;A nebo pokud je to potřeba jako funkce: function splitString($string, $count)
{
if ($count <= 0) {
throw new Exception('Please provide an unsigned integer');
}
return preg_replace('~(.{' . (int) $count . '})(.*)~Uu', '$1 $2', $string);
}
echo splitString('ahojjajsemdlouheslovoamamspoustuznakuprotosepotrebujurozdelit', 18); |
||
| PetrPN Profil |
#6 · Zasláno: 19. 11. 2009, 15:22:50
<?php $str = "ahojjajsemdlouheslovoamamspoustuznakuprotosepotrebujurozdelit"; $arr1 = str_split($str); $arr2 = str_split($str, 18); print_r($arr1); print_r($arr2); ?> Nebo přímo tady.. Petr |
||
|
Časová prodleva: 17 let
|
|||
0