| FAQ |
| Kalender |
|
|
#1 | |||
|
||||
|
Medlem
|
Jag blir vansinnig på den här enkla funktionen och jag får inte till det ordentligt (det är eventuella radbrytningar (\n) i texten som orsakar problem.
Tanken är att $text är en enkel oformatterad text, och funktionen ska returnera allt med tecknet ">" framför varje rad. $chars_per_row är styrningen för hur långa raderna ska bli (man får ta hänsyn till att det är ord i texten, så man inte klipper orden rakt av). Jag bifogar en grundstomme, men kom gärna med en ny infallsvinkel om du har bättre förslag: Kod:
function text2rows($text, $chars_per_row)
{
$words = explode(' ', $text);
$i = 0;
$row = array();
foreach ($words AS $t)
{
$row[$i] .= $t.' ';
if (strlen($row[$i]) > $chars_per_row)
$i++; // ny rad.
}
foreach ($row AS $t)
$new_text .= "> ".trim($t)."\n";
return $new_text;
}
|
|||
|
|
Svara med citat
|
|
|
#2 | ||
|
|||
|
Medlem
|
Hur menar du blir fel? En snabbläsning av koden ovan så verkar det som att blankrader kommer ignoreras i räkning - alltså kan dem finnas överallt. Kanske bättre att antingen ta bort alla radbrytningar (alt. ta bort alla radbrytningar som inte är dubbla)?
|
||
|
|
Svara med citat
|
|
|
#3 | |||
|
||||
|
Flitig postare
|
fick du ordning på det? snabba tankar: hinner bara titta lite snabbt men du borde köra en preg_replace för annars lär texten du lägger in bli mysko med mellanrummen och radbrytena. Sen måste du känna av om detä r en tom rad (ifsats..) och du hålla räkningen på bokstäverna så om ett ord får plats eller inte plats på en rad...
|
|||
|
|
Svara med citat
|
|
|
#4 | |||
|
||||
|
Har WN som tidsfördriv
|
Annars kan du säkert använda wordwrap med samma resultat:
Kod:
function text2rows($text, $chars_per_row)
{
return wordwrap($text, $chars_per_row, "\n> ");
}
|
|||
|
|
Svara med citat
|
|
|
#5 | |||
|
||||
|
Har WN som tidsfördriv
|
Eller gör om din ursprungliga funktion en aning:
Kod:
function text2rows($text, $chars_per_row)
{
//$text = preg_replace("/\s+/", " ", $text); // om du vill bli av med överflödiga whitespaces
$text = preg_replace("/[\r\n]+/", " ", $text); // om du vill bli av med radbrytningar
$words = explode(' ', $text);
$i = 0;
$row = array();
foreach ($words as $t)
{
$row[$i] .= $t.' ';
if (strlen($row[$i]) > $chars_per_row)
$i++; // ny rad.
}
foreach ($row AS $t)
$new_text .= "> ".trim($t)."\n";
return $new_text;
}
|
|||
|
|
Svara med citat
|
| Svara |
|
|