Avatar billede intel4004 Novice
17. juli 2003 - 12:30 Der er 11 kommentarer og
1 løsning

Fjernelse af linieskift i string-variabel

Er det muligt at rense en tekst-streng for newline-character (\n) ?? Hvordan?

Jeg har problemer med en variablen som jeg forsøger at parse ind i noget javascript. Javascript er ikke glad for linie skift (ihvertfald ikke i en onclick-event), så disse skal fjernes.

ob_start();
?>
<table action="login.php" method="post">
<input type="text" name="username">
<input style="width: 100%;" type="password" name="password">
<input type="submit" value="login">
</table>
<?php
$overlibtext = ob_get_contents();
ob_end_clean();
$overlibtext = str_replace("\"", "&quot;", $overlibtext);

?>

Jeg gør det på denne måde, så det er lettere at skrive html-koden direkte, istedet for i PHP-mode. Jeg bruger Overlib hvis nogen kender til det. Der forekommer et linieskift hele tiden, og jeg har forsøgt at fjerne det med str_replace og en explode/implode.

Men intet virker. Det jeg har brug for er en funktionel metode til at lave en masse tekst (indholdet i $overlibtext) om til en enkel linie.

Mvh Intel4004
Avatar billede ohmish Nybegynder
17. juli 2003 - 12:37 #1
$overlibtext = str_replace("\n", " ", $overlibtext);
$overlibtext = str_replace("<br>", " ", $overlibtext);
Avatar billede intel4004 Novice
17. juli 2003 - 12:41 #2
ohmish>

Ved brug af

$overlibtext = str_replace("\n", " ", $overlibtext);

er der stadig linieskift i teksten.

Har prøvet med:

$overlibtext = str_replace("\n", "AND", $overlibtext);

og resultatet bliver:

AND<table>
AND<input type=\'text\' name=\'username\'>
AND<input style=\'width: 100%;\' type=\'password\' name=\'password\'>
AND</table>
AND

Intel4004
Avatar billede intel4004 Novice
17. juli 2003 - 12:44 #3
Er der nogle specielle regler ved output-buffering og det faktum at jeg forlader PHP-mode for derefter at gå tilbage igen. Måske er det noget med den mode min editor laver linieskift ??

Intel4004
Avatar billede erikjacobsen Ekspert
17. juli 2003 - 12:44 #4
$overlibtext=<<<UUUUUUU
<table action="login.php" method="post">
<input type="text" name="username">
<input style="width: 100%;" type="password" name="password">
<input type="submit" value="login">
</table>
UUUUUUU;
$overlibtext = str_replace("\n", " ",$overlibtext);
$overlibtext = str_replace("\r", " ",$overlibtext);
Avatar billede intel4004 Novice
17. juli 2003 - 12:49 #6
erikjacobsen>

Hvad er egentlig forskellen på \n og \r ??

Jeg spørger fordi det virker !! Bruger jeg først \n og derefter \r får jeg fjernet alle linieskift... :)

Tak!

Intel4004
Avatar billede erikjacobsen Ekspert
17. juli 2003 - 12:50 #7
Hvis du taster ind i Windows får du typisk Carriage Return, \r, og
Line Feed, \n. Du fjerner bare begge.
Avatar billede intel4004 Novice
17. juli 2003 - 12:51 #8
ok troede dit <<<UUUUUUU var en skrivefejl eller noget :) Første gang jeg hører om Heredoc syntaks... :)
Avatar billede erikjacobsen Ekspert
17. juli 2003 - 12:52 #9
Du kan lave den tekst som du vil. Bare den er ens foroven og forneden. Og
til dit brug her er den meget mere effektivt end din løsning.
Avatar billede intel4004 Novice
17. juli 2003 - 12:56 #10
Ja det må man sige :)
Avatar billede intel4004 Novice
17. juli 2003 - 13:11 #11
Men den automatiske farve-syntaks i min yndlingseditor kan ikke lide metoden :)
Avatar billede intel4004 Novice
17. juli 2003 - 13:56 #12
hehe <table>, <form> whatever :)
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