Avatar billede mesteren_selv Nybegynder
09. juni 2005 - 18:40 Der er 12 kommentarer og
1 løsning

While-løkke der fjerner halve ord

Hej derude...

Jeg har en while-løkke med det formål at fjerne det eventuelle sidste halve ord i en delt tekst. Teksten dles af en større for-løkke, men det er while-løkken der er problemer med:

for ($i=0; $i<strlen($_POST['besk']); $i=$i+600) {
    for ($j=$i; $j<($i+600); $j++) {
    $t .= $_POST['besk'][$j];
    }
    $t = trim($t);
    while ($t[strlen($t)] != " ") {
    $t = substr($t, 0, -1);
    $i--;
    $j--;
    }
    mysql_query (
    "INSERT INTO `forside-tekst-$id` (text) VALUES ('$t')"
    ) or die(mysql_error());
    $t = "";
}

Nu sætter den bare ingenting ind, men returnerer en fejl om "internal server error"

På forhånd tak, Mesteren
Avatar billede nielle Nybegynder
09. juni 2005 - 18:54 #1
Mon ikke det er denne her som driller?

while ($t[strlen($t)] != " ")
{
    $t = substr($t, 0, -1);
    $i--;
    $j--;
}

På et eller andet tidspunkt vil:

$t = substr($t, 0, -1);

- forsøge at går "foran starten" af din streng hvis den ikke indeholder et mellemrum.
Avatar billede nielle Nybegynder
09. juni 2005 - 19:00 #2
Måske sådan her?

for ($i=0; $i<strlen($_POST['besk']); $i=$i+600)
{
    for ($j=$i; $j<$i+600; $j++)
        $t .= $_POST['besk'][$j];

    $t = trim($t);

    $pos = strpos($t, " ");
    if (($pos !== false))
    {
        while ($t[strlen($t)] != " ")
        {
            $t = substr($t, 0, -1);
            $i--;
            $j--;
        }
    }

    mysql_query ("INSERT INTO `forside-tekst-$id` (text) VALUES ('$t')") or die(mysql_error());

    $t = "";
}
Avatar billede mesteren_selv Nybegynder
09. juni 2005 - 19:01 #3
Men jeg har kun prøvet det af med en tekst der indeholder mellemrum... Det er indenfor den løkke den driller, for før jeg tilføjede den var der ingen problemer! Kan jeg eventuelt tjekke om teksten indeholder mellemrum?
Avatar billede nielle Nybegynder
09. juni 2005 - 19:01 #4
Ret:

if (($pos !== false))

- til:

if ($pos !== false)

Bemærk "!==" - ikke "!=".

http://dk.php.net/strpos
Avatar billede nielle Nybegynder
09. juni 2005 - 19:04 #5
Hmm, du bruger faktisk både $i og $j i din for-løkke. Men du har dem også i din while-løkke (hvor de egentlig ikke snyens at gøre noget). Mon det simpelthen er en konflikt mellem variable som hedder det samme?
Avatar billede mesteren_selv Nybegynder
09. juni 2005 - 19:04 #6
Nix... Driller stadig! Desværre :-/
Avatar billede mesteren_selv Nybegynder
09. juni 2005 - 19:06 #7
Øhhh... $i er vigtig i while -løkken, fordi at næste del af teksten skal begynde med de bogstaver der er fjernet fra første del...
Avatar billede mesteren_selv Nybegynder
09. juni 2005 - 19:10 #8
$j blev overflødiggjort da jeg ændrede $t[$j] til $t[strlen($t)]... Men selv uden de to brokker den sig...
Avatar billede nielle Nybegynder
09. juni 2005 - 19:12 #9
Starter strenge ikke på position 0 i PHP:

while ($t[strlen($t)-1] != " ")
Avatar billede mesteren_selv Nybegynder
09. juni 2005 - 19:17 #10
Bingo... Du er en skat... Point?
Avatar billede nielle Nybegynder
09. juni 2005 - 19:18 #11
Svar :^)
Avatar billede mesteren_selv Nybegynder
09. juni 2005 - 19:19 #12
Værs'go!
Avatar billede barklund Nybegynder
09. juni 2005 - 23:18 #13
Hvis du forsøger at klippe en tekst op i linjer, så tag lige et kig på http://php.net/wordwrap - det tror jeg er _markant_ nemmere!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester