kostenloser Webspace werbefrei: lima-city


preg_match() Absätze

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    ich muss dich leider enttäuschen. Alle Zeichen sind trotzdem erlaubt. wenn ich das ! wegnehme funktioniert nichts

    Gruß
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo

    ... zu Umlaute (ä ö ü) und preg_match() etc. mit utf-8 string

    man muss die Umlaute zuerst auch zu utf-8 umwandeln
    und mann muss im Regex-Patern den Modifier /u setzen (UTF-8)

    ## $string = utf8_encode($string); 
    
    if (!mb_detect_encoding($string, 'UTF-8', true)) { $string = utf8_encode($string); } 
    
    
    $umlaute = 'äöüßÄÖÜ'; 
    $umlaute = utf8_encode($umlaute); 
    
       $pattern = '~^[^\sa-zA-Z' . $umlaute . '0-9!?^/()+\-*:.,]+$~/us'
    ## $pattern = '~^[^\sa-zA-ZäüößÄÜÖ0-9!?^/()+\-*:.,]+$~'
    
    $run1 = preg_match($pattern, $string, $matches);


    wenn man Umlaute in einem UTF-8 String finden will,
    dann muss man auch beim "Suchen" die Umlaute als UTF-8 haben,

    entweder mit utf8_encode() oder schon bei Eingabe als UTF-8 speichern
    egal .... das Prinzip sollte klar sein ..
    ... Pattern und String sollten gleichen Charset / Kodierung haben




    Beitrag zuletzt geändert: 26.6.2014 12:13:51 von netwin
  4. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    der String wurde in utf8 konvertiert. Buchstaben , und somit auch Umlaute, sind erlaubt sowie einige Zeichen. Dies ist aber nicht mein eigentliches Problem. Wie du am Themar erkennen kannst sind es die Absätze die Schwierigkeiten machen.

    Gruß
  5. Das mit dem Absätzen geht via \s
  6. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    mit \s war es leider nicht alleine getan. ich habe jetzt auch mahl \n\r\t\f hinzugefügt. jetzt funktioniert es

    Danke für eure Mitarbeit
    Gruß
  7. Hallo

    vielleicht hilft Dir diese Funktion weiter ...

    wenn man das "Verbotene Steuer- und Sonderzeichen" weglässt
    ... ist hier mit ## aus-Kommentiert ...
    (oder eben einzeln "\r" und "\n" und "\s" aus den Steuer-Zeichen enternen)
    dann sollte damit Dein String aus Textarea auch Umbrüche / Absätze enthalten,

    // ---------------------------------------------------------------
    
    function strg_filter_text($string) { 
    	
    	// ----- Text zu UTF-8 umwandeln ----- 
    	if (mb_detect_encoding($string, 'UTF-8', true) === FALSE) { 
    	$string = utf8_encode($string); 
    	}
    
    	// ----- Verbotene Steuer- und Sonderzeichen (array) ----- 
    ## 	$sonderz = array( '\\', "'", '"', "\0", "\r", "\n", "\t", "\s", "^" ); 
    ## 	$string = str_replace($sonderz, ' ', $string); 
    ## 	$string = preg_replace("/[[:cntrl:]]/is", ' ', $string); 
    	
    	// ----- Alle Backslashes entfernen ----- 
    	while(strchr($string,'\\')) { $string = stripslashes($string); } 
    	
    	// ----- Nur erlaubte Zeichen in Text lassen ----- 
    
    	$umlaute = 'äöüÄÖÜß'; 
    	$umlaute = utf8_encode('äöüÄÖÜß'); 
    	$pattern = '/[^a-zA-Z'.$umlaute.'0-9 ,:;_&\-\.\/\+']/su'; 
    	$string = preg_replace($pattern, ' ', $string); 
    	
    	// ----- Doppelte Leerzeichen entfernen  ----- 
    	$string = preg_replace('/ {2,}/', ' ', $string); 
    	
    	// ----- Satzzeichen Anfang/Ende entfernen  ----- 
    	$string = trim($string,'.,;:-+_/'); 
    	$string = trim($string); 
    	
    	// ----- Ausgabe der Funktion  ----- 
    	return $string; 
    	
    }
    
    // ---------------------------------------------------------------


    ... die Funktion mach nicht preg_match() sondern preg_replace()
    d.h bei Aufruf der Funktion ekommst Du den "sauberen" Text zurück

    $new_text = strg_filter_text($eingabe_text);


    Bei Bedarf kann man sich durch weitere Argumente auch einzelne Zeichen als Erlaubt und/oder Verboten im Funktions-Aufruf dazu bauen, dann kann man einfacher mit verschiedenen Zeichen experimentieren.

  8. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    Danke aber habe jetzt alles was ich brauche
  9. \s steht für \r\n\t\f

    Logischerweise musst du \s+ verwenden. Dies steht für "kein oder unendlich viele Zeilenumbrüche". Ohne das + steht \s für "Ein Umbruch".

    Beitrag zuletzt geändert: 1.7.2014 5:11:03 von fabo
  10. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    ahhh, da ist also der Fehler. Wieder was dazugelernt:wink:
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!