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: 14 let
|
0