Avatar billede supermand69 Nybegynder
03. april 2005 - 09:47 Der er 18 kommentarer og
1 løsning

slet overflødige \n

Jeg har forsøgt at lave en et script som skal slette alle overflødige \n, men det er ikke altid at det virker?? Hvad kan der være galt?

$empty = "( *\r?\n)";

$trans_arr = array(
    "/^$empty*(.*)$empty*$/" => "\\2",
    "/$empty{3,}/" => "\n\n"
);

$str = preg_replace(array_keys($trans_arr), array_values($trans_arr), $str);
Avatar billede dennismp Nybegynder
03. april 2005 - 10:26 #1
Hvornår er et \n overflødigt?
Avatar billede supermand69 Nybegynder
03. april 2005 - 12:11 #2
hvis en string starter eller slutter med \n eller mellem rum og der må højest være 2 \n lige efter hinanden
Avatar billede dennismp Nybegynder
03. april 2005 - 12:39 #3
$str = preg_match("/\s{3,}/","  ", trim($str) );
Avatar billede dennismp Nybegynder
03. april 2005 - 12:39 #4
hov, det skal være preg_replace og ikke preg_match
Avatar billede supermand69 Nybegynder
03. april 2005 - 12:47 #5
det virker ikke.. nu sletter den bare alle \n
Avatar billede supermand69 Nybegynder
03. april 2005 - 12:51 #6
her er hele min funktion:

function txt2sql($str)
{
    $str = stripslashes($str);
    $str = str_replace("\r", '', $str);
    $str = addslashes($str);
    $str = trim($str, " \xA0");
   
    $empty = "( *\n)";
    $trans_arr = array(
        "/^$empty*(.*)$empty*$/" => "\\2",
        "/$empty{3,}/" => "\n\n"
    );
   
    $str = preg_replace(array_keys($trans_arr), array_values($trans_arr), $str);
   
    return $str;
}
Avatar billede dennismp Nybegynder
03. april 2005 - 13:12 #7
$str=preg_replace("/\n{3,}/","  ", trim($str) );

kan ses her:
http://dennis.moellegaard.dk/php/exp/605977.php
Avatar billede supermand69 Nybegynder
03. april 2005 - 13:53 #8
så sletter den ikke gentagne mellemrum efter hinanden midt i stringen
Avatar billede dennismp Nybegynder
03. april 2005 - 14:12 #9
Så den skal fjerne:

1) mellemrum og \n før og efter selve teksten.
2) Der må max være \n*2
3) Der må max være et enkelt mellemrum

Er der andre ting?
Avatar billede supermand69 Nybegynder
03. april 2005 - 14:25 #10
ja, jeg tror vist det er det hele :)
Avatar billede dennismp Nybegynder
03. april 2005 - 14:30 #11
Prøv denne:
$str=preg_replace(array("/\n{3,}/","/ {2,}/"),array("\n\n"," "), trim($str) );
Avatar billede supermand69 Nybegynder
03. april 2005 - 14:35 #12
den skal også slette mellemrum i starten og slutningen af alle linjer.. ikke kun i start og slut
Avatar billede dennismp Nybegynder
03. april 2005 - 14:48 #13
$str = join("\n", array_map("trim",explode("\n", preg_replace(array("/\n{3,}/","/ {2,}/"),array("\n\n"," "), trim($str) ))));
Avatar billede supermand69 Nybegynder
03. april 2005 - 14:58 #14
http://clark.avansis.dk/test/txt2sql/

det virker næsten... men der er stadig for mange \n efter hinanden :)
Avatar billede supermand69 Nybegynder
03. april 2005 - 15:10 #15
jeg tror det virker nu efter jeg smed preg'en ned til sidst :)
Avatar billede supermand69 Nybegynder
03. april 2005 - 15:13 #16
mange tak for hjælpen :)

det var lige hvad der skulle til... hehe
Avatar billede Slettet bruger
03. april 2005 - 15:26 #17
Hvis en streng starter eller slutter med \n eller mellemrum:

http://www.php.net/trim

det er _præcis_ hvad den gør :o)
Avatar billede dennismp Nybegynder
03. april 2005 - 15:36 #18
Øh .. ja og ?

Hvis du ser på indlæggene, så har alle mine forslag trim().
Avatar billede Slettet bruger
03. april 2005 - 16:54 #19
øv. Jeg tror jeg skal til at læse alt før jeg begynder at skrive :o(
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