|  | 		    
					
        
         
          
         
	
          | |  | Fjerne overflødige linjeskift i starten og~ Fra : Jens Gregersen [9670~
 | 
 Dato :  10-08-03 21:30
 | 
 |  | 
 
            Hej
 Jeg har en gæstebog lavet på filer. Altså med fopen, fputs osv. Jeg bruger
 så nl2br() til at erstatte linjeskift med <br> / <br />. Problemet er bare
 når der er en eller anden idi*t, der sætter 17 linjeskift til at starte med
 og 31 til at slutte med. Disse linjeskift vil jeg gerne have fjernet.
 Desuden vil jeg gerne have det lavet sådan, at der max kan være 2 <br>'er
 efter hinanden så man undgår en masse overflødige linjeskift.
 Altså skal...
 [eks]
 Hej allesammen<br>
 <br>
 <br>
 <br>
 ville bare sige hej<br>
 <br>
 <br>
 <br>
 Jensen
 [/eks]
 ....erstattes med:
 [eks2]
 Hej allesammen<br>
 <br>
 ville bare sige hej<br>
 <br>
 Jensen
 [/eks2]
 Jeg kunne forestille mig noget a la...
 if (antallet af <br> =>2) {
     fjern overflødige
 }
 ....men jeg kan ikke lige se hvordan man laver det med php (har ikke prøvet
 men går ikke ud fra at ovenstående virker    -- 
 Jens Gregersen
 Ved mail, fjerne pr0n'et i min mailadresse
            
             |  |  | 
  Kim Schulz (10-08-2003) 
 
	
          | |  | Kommentar Fra : Kim Schulz
 | 
 Dato :  10-08-03 21:35
 | 
 |  | 
 
            On Sun, 10 Aug 2003 22:29:33 +0200
 "Jens Gregersen [9670]" <jg@PR0Nstofanet.dk> wrote:
 > Hej
 > 
 > Jeg har en gæstebog lavet på filer. Altså med fopen, fputs osv. Jeg
 > bruger så nl2br() til at erstatte linjeskift med <br> / <br />.
 > Problemet er bare når der er en eller anden idi*t, der sætter 17
 > linjeskift til at starte med og 31 til at slutte med. Disse linjeskift
 > vil jeg gerne have fjernet. Desuden vil jeg gerne have det lavet
 > sådan, at der max kan være 2 <br>'er efter hinanden så man undgår en
 > masse overflødige linjeskift.
 > 
 > Altså skal...
 > 
 > [eks]
 > Hej allesammen<br>
 > <br>
 > <br>
 > <br>
 > ville bare sige hej<br>
 > <br>
 > <br>
 > <br>
 > Jensen
 > [/eks]
 > 
 > ...erstattes med:
 > 
 > [eks2]
 > Hej allesammen<br>
 > <br>
 > ville bare sige hej<br>
 > <br>
 > Jensen
 > [/eks2]
 > 
 > Jeg kunne forestille mig noget a la...
 > 
 > if (antallet af <br> =>2) {
 >     fjern overflødige
 > }
 > 
 > ...men jeg kan ikke lige se hvordan man laver det med php (har ikke
 > prøvet men går ikke ud fra at ovenstående virker    > 
 noget ala dette burde gøre det:
 $text = preg_replace("/^<br>\n<br>/", "",$text);
            
             |  |  | 
  Jens Gregersen [9670~ (10-08-2003) 
 
	
          | |  | Kommentar Fra : Jens Gregersen [9670~
 | 
 Dato :  10-08-03 21:39
 | 
 |  | [snip]
 
 > noget ala dette burde gøre det:
 > $text = preg_replace("/^<br>\n<br>/", "",$text);
 
 Hmm... Er det sådan at du gider skrive en lidt mere uddybbende forklaring?
 
 Som jeg ser det fjerner det script alle <br> der er gentaget over to gange?
 Eller er jeg helt gal på den?
 
 Og det ^ er jeg ikke helt med på ;)
 
 --
 Jens Gregersen
 Ved mail, fjerne pr0n'et i min mailadresse
 
 
 
 
 |  |  | 
   Thomas D (10-08-2003) 
 
	
          | |  | Kommentar Fra : Thomas D
 | 
 Dato :  10-08-03 22:50
 | 
 |  | 
 
            Jens Gregersen [9670] wrote:
 > [snip]
 >
 >> noget ala dette burde gøre det:
 >> $text = preg_replace("/^<br>\n<br>/", "",$text);
 >
 > Hmm... Er det sådan at du gider skrive en lidt mere uddybbende
 > forklaring?
 Den er her:
http://www-2.cs.cmu.edu/People/rgs/pl-regex.html Det er perl regular expressions du ka læse om.
 > Som jeg ser det fjerner det script alle <br> der er gentaget over to
 > gange? Eller er jeg helt gal på den?
 >
 > Og det ^ er jeg ikke helt med på ;)
 Det kommer du helt med på efter at ha leget lidt mere med perl regular
 expressions.
 Det er i det hele taget en god ting at kunne regex, det har du fx. brug for
 når du skal søge/erstatte i vi/vim -:)
 -- 
 Med venlig hilsen
 Thomas D
http://tdn.peps.dk Musikere tjener penge på ulovligt kopieret software.
            
             |  |  | 
  Kim Schulz (10-08-2003) 
 
	
          | |  | Kommentar Fra : Kim Schulz
 | 
 Dato :  10-08-03 21:43
 | 
 |  | On Sun, 10 Aug 2003 22:38:49 +0200
 "Jens Gregersen [9670]" <jg@PR0Nstofanet.dk> wrote:
 > [snip]
 >
 > > noget ala dette burde gøre det:
 > > $text = preg_replace("/^<br>\n<br>/", "",$text);
 >
 > Hmm... Er det sådan at du gider skrive en lidt mere uddybbende
 > forklaring?
 >
 > Som jeg ser det fjerner det script alle <br> der er gentaget over to
 > gange? Eller er jeg helt gal på den?
 >
 > Og det ^ er jeg ikke helt med på ;)
 
 
 det fjerner alle de gange hvor du har 2 linjer efter hinanden med <br>
 HVOR det står først på linjen.
 
 
 
 |  |  | 
  Martin Koch Andersen (10-08-2003) 
 
	
          | |  | Kommentar Fra : Martin Koch Andersen
 | 
 Dato :  10-08-03 21:45
 | 
 |  | Jens Gregersen [9670] wrote:
 
 > Jeg har en gæstebog lavet på filer. Altså med fopen, fputs osv. Jeg
 > bruger så nl2br() til at erstatte linjeskift med <br> / <br />.
 > Problemet er bare når der er en eller anden idi*t, der sætter 17
 > linjeskift til at starte med og 31 til at slutte med. Disse
 > linjeskift vil jeg gerne have fjernet. Desuden vil jeg gerne have det
 > lavet sådan, at der max kan være 2 <br>'er efter hinanden så man
 > undgår en masse overflødige linjeskift.
 
 Det er ikke helt klart om du laver nl2br før eller efter du gemmer.
 Du bør gemme _uden_ nl2br, og først kalde nl2br i forbindelse med
 udskrivning af beskederne i din gæstebog. Således af filen altså indeholder
 almindelige linebreaks fremfor <br />. Det var bare et tip.
 
 Følger du denne opskrift, gør følgende, hvad du ønsker:
 
 # Når du gemmer:
 $input = trim($input);
 $input = preg_replace("|[\n]{3,}|", "\n\n", $input);
 .... skriv $input til din fil ...
 
 
 # Når du henter:
 .... hent $output fra din fil ...
 $output = nl2br($output);
 .... udskriv $output ...
 
 Og lidt forklaring: Trim fjerner foran/bagved stående newlines, spaces mv.
 Det regulære udtryk erstatter flere end 2 efterfølgende \n med præcis 2 \n.
 
 --
 Martin
 
 
 
 
 |  |  | 
  Jens Gregersen [9670~ (10-08-2003) 
 
	
          | |  | Kommentar Fra : Jens Gregersen [9670~
 | 
 Dato :  10-08-03 22:31
 | 
 |  | 
 
            > Det er ikke helt klart om du laver nl2br før eller efter du gemmer.
 > Du bør gemme _uden_ nl2br, og først kalde nl2br i forbindelse med
 > udskrivning af beskederne i din gæstebog. Således af filen altså
 > indeholder almindelige linebreaks fremfor <br />. Det var bare et tip.
 Jeg laver nl2br før jeg gemmer i filen. Men for at så mere overskuelige
 koden (jeg vil lave noget mini-admin så jeg kan rette i den rå html-kode)
 har jeg selv sat nogle \n ind.
 > Følger du denne opskrift, gør følgende, hvad du ønsker:
 >
 > # Når du gemmer:
 > $input = trim($input);
 > $input = preg_replace("|[\n]{3,}|", "\n\n", $input);
 > ... skriv $input til din fil ...
 >
 >
 > # Når du henter:
 > ... hent $output fra din fil ...
 > $output = nl2br($output);
 > ... udskriv $output ...
 Jeg gør som ovenstående, men jeg synes ikke det virker.
 Det hele kan ses på: http://jg.peps.dk/test/gast/ Desuden har jeg lavet .phps-filer:
 - http://jg.peps.dk/test/gast/skriv.phps - http://jg.peps.dk/test/gast/index.phps -- 
 Jens Gregersen
 Ved mail, fjerne pr0n'et i min mailadresse
            
             |  |  | 
   Martin Koch Andersen (10-08-2003) 
 
	
          | |  | Kommentar Fra : Martin Koch Andersen
 | 
 Dato :  10-08-03 22:46
 | 
 |  | Jens Gregersen [9670] wrote:
 
 >> # Når du gemmer:
 >> $input = trim($input);
 >> $input = preg_replace("|[\n]{3,}|", "\n\n", $input);
 >> ... skriv $input til din fil ...
 
 > Jeg gør som ovenstående, men jeg synes ikke det virker.
 
 $input = trim($input);
 $input = preg_replace("|[\r\n]{4,}|", "\r\n\r\n", $input);
 
 --
 Martin
 
 
 
 
 |  |  | 
    Jens Gregersen [9670~ (10-08-2003) 
 
	
          | |  | Kommentar Fra : Jens Gregersen [9670~
 | 
 Dato :  10-08-03 23:00
 | 
 |  | [snip forkert]
 
 > $input = trim($input);
 > $input = preg_replace("|[\r\n]{4,}|", "\r\n\r\n", $input);
 
 Nu virker det! :)
 
 Men sidste problem:
 
 Det, der bliver skrevet til filen vil jeg gerne have til at se pænt ud.
 
 Altså i stedet for at...
 
 [eks]
 <table><tr><td>(indhold)</td></tr></table>
 [/eks]
 
 ....bliver skrevet vil jeg gerne have...
 
 [eks]
 <table>
 <tr>
 <td>
 (indhold)
 </td>
 </tr>
 </table>
 
 ....skrevet. Men ved at køre nl2br /efter/ skrivningen gør jo at de også
 bliver tolket som linjeskift :-/
 
 --
 Jens Gregersen
 Ved mail, fjerne pr0n'et i min mailadresse
 
 
 
 
 |  |  | 
     Thomas D (11-08-2003) 
 
	
          | |  | Kommentar Fra : Thomas D
 | 
 Dato :  11-08-03 11:14
 | 
 |  | 
 
            Jens Gregersen [9670] wrote:
 > [snip forkert]
 >
 >> $input = trim($input);
 >> $input = preg_replace("|[\r\n]{4,}|", "\r\n\r\n", $input);
 >
 > Nu virker det! :)
 >
 > Men sidste problem:
 >
 > Det, der bliver skrevet til filen vil jeg gerne have til at se pænt
 > ud.
 >
 > Altså i stedet for at...
 >
 > [eks]
 > <table><tr><td>(indhold)</td></tr></table>
 > [/eks]
 >
 > ...bliver skrevet vil jeg gerne have...
 >
 > [eks]
 > <table>
 > <tr>
 > <td>
 > (indhold)
 > </td>
 > </tr>
 > </table>
 >
 > ...skrevet. Men ved at køre nl2br /efter/ skrivningen gør jo at de
 > også bliver tolket som linjeskift :-/
 erhm....
 hvorfor nøjes du ikke med at køre nl2br() på inputtet og ikke alt det andet?
 lige som på 00y.
 -- 
 Med venlig hilsen
 Thomas D
http://tdn.peps.dk Musikere tjener penge på ulovligt kopieret software.
            
             |  |  | 
 |  |