kostenloser Webspace werbefrei: lima-city


Leerzeichen nach / vor bestimmten Zeichen erzwingen ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    osuche

    osuche hat kostenlosen Webspace.

    Hallo

    ich möchte in einem tag/string">String vor / nach bestimmten Zeichen ein Leerzeichen erzwingen

    1) für bekannte Zeichen:

    bisher habe ich folgendes

    <?php
    
    $string = 'Jeder der kann/will wird es schaffen(machen)oder:auch nicht,mir egal;oder auch nicht!'; 
    
    $xzeichen = array( '(', '/' );  // ----- Leerzeichen davor
    $yzeichen = array( ':', ';', '.', ',', '!', '?', ')', '/' );  // ---- Leerzeichen danach
    
    // ------ Leerzeichen davor ----- 
    foreach ($xzeichen as $xz) {
    $string = str_replace( $xz, ' '.$xz, $string); 
    }
    
    // ------ Leerzeichen danach ----- 
    foreach ($yzeichen as $yz) {
    $string = str_replace( $yz, $yz.' ', $string); 
    }
    
    // ------ mehrfache Leerzeichen ----- 
    $string = preg_replace('/ {2,}/', ' ', $string);
    
    ?>



    das funktioniert soweit,
    aber ich kenne mich mit preg_replace nicht so gut aus
    und denke, evtl gibt es damit eine bessere Lösung,

    Problem ist auch der Punkt ... wenn ich (float) Zahlen im String habe
    dann wird aus "33.33%" dann "33. 33%" ... oder aus 1.52 MB ... 1. 52 MB
    also Regel: nur wenn Wort keine Zahl ist ? .... is_numeric() .... ?




    und jetzt das zweite Problem:

    2) unbekannte Zeichen

    Im String sind Aufzählungen die wahrscheinlich aus Listen erstellt wurden
    und im String kommen dann Sachen an wie:
    $string = 'Ich fahre BMWDas Auto ist immer SauberIch wasche es jeden Tag';


    auf die Erstellung der Strings habe ich keinen Einfluss, daher kann dabei nix ändern

    Eine Lösung für Leerzeichen vor Grossbuchstabe habe ich auf Lima-City gefunden
    Hier: https://www.lima-city.de/thread/profen-ob-innerhalb-wort-grosser-buchstabe

    Aber bei bestimmten Fällen klappt das leider nicht, z.B. .... BMWDas Auto .....

    also bräuchte ich noch eine Regel um dann ein Leerzeichen einzufügen
    wenn der folgende Buchstabe nach mehreren Grossbuchstaben wieder ein Kleinbuchstabe ist
    also so, das aus dem Teil ... BMWDas Auto .... das wird: ... BMW Das Auto ....

    wenn Wort mehrere Grossbuchstaben in folge enthält aber auch noch Kleinbuchstaben
    dann Wort mit Leerzeichen trennen an der Stelle ab 1. Kleinbuchstabe minus 1

    ich hoffe das Problem ist verstanden und jemand kann mir helfen.
    Danke schonmal !




    Beitrag zuletzt geändert: 11.11.2011 12:05:08 von osuche
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Regex ist nicht immer die beste Lösung. Zumal str_replace auch mit Arrays arbeiten kann, sodass eine Schleife unnötig ist.

    Für den Rest bin ich zu müde. Gute Nacht :D

    Beitrag zuletzt geändert: 11.11.2011 12:10:10 von fabo
  4. 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!