GELÖST preg_replace | erstes zeichen nach leerz. strtoupper

Schon festgestellt? Dem Forum sind gerade alle Interaktionsmöglichkeiten genommen. :(

Mehr dazu unter: Abstimmung über das Forum

  • hallo :)


    ich habe versucht in einem string das erste zeichen nach einem leerzeichen zu finden
    wenn ich folgende methode anwende wird das erste zeichen nach dem leerzeichen und das leerzeichen gelöscht =)


    variante1

    PHP
    1. <span class="syntaxdefault">$name</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"/(\040)(.)/"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $name</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span>


    soweit ich es versanden habe symbolisieren die bereiche in den runden klammern (\040)(.) referenzbereiche die in $replacement wieder angesprochen werden können


    variante2

    PHP
    1. <span class="syntaxdefault">$name</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"/(\040)(.)/"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> strtoupper</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"\\2"</span><span class="syntaxkeyword">),</span><span class="syntaxdefault"> $name</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span>


    mit dieser variante werden die zeichen nach dem leerzeichen angezeigt, jedoch unverändert , das leerzeichen ist weg
    und wenn ich


    variante3

    PHP
    1. <span class="syntaxdefault">$name</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"/(\040)(.)/"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> strtoupper</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"w"</span><span class="syntaxkeyword">),</span><span class="syntaxdefault"> $name</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span>


    verwende, werden die ersten zeichen nach dem leerzeichen und das leerzeichen durch 'W' ersetzt


    so... variante 1 und 3 verwundern mich nicht , jedoch bin ich entäuscht das die refernzierung in variante 2 nicht funktioniert ):


    vielleicht habt ihr einen gedankenanstoss


    gruß
    peter



    ------------------------------------------
    EDIT
    betreff als gelöst markiert

  • Du ersetzt mit (.) genau EIN Zeichen,


    Willst du mehrere Zeichen ersetzen dann nimm
    (.*) <- beliebig viele Zeichen
    oder
    (.{0,2}) <- 2 Zeichen

  • Zeig mal bitte den String mit dem du versuchst und mit dem es nicht klappt, sonst haben wir keinen Anhaltspunkt.

  • Nur mal gerade so in den Raum geworfen.. text-transform: capitalize;.. sollte es sich hierbei um Usereingaben handeln ^^


    Andernfalls schaue ich mir das sonst gleich nahc dem Frühstück noch mal an :D

  • wird in einer methode verwendet


    es wird ihr der titel für ein input feld übergeben


    mit preg_replace möchte ich nun alle leerzeichen löschen und das erste zeichen nach dem leerzeichen soll groß werden
    um eine höckerschrift für das input attribut name="" zu ereichen


    Code
    1. Mein erstes Input Feld funktioniert


    becomes


    Code
    1. MeinErstesInputFeldFunktioniert


    umlaute und diverse zeichen werden nat. auch geprüft ;)


    gruß
    peter

  • Einfach ucwords nutzen:


    PHP
    1. <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br /><br /><br /> $a </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'Mein erstes Input Feld funktioniert'</span><span class="syntaxkeyword">;<br /><br /> </span><span class="syntaxdefault">$a </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">ucwords</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">);<br /><br /> </span><span class="syntaxdefault">$a </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">str_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">' '</span><span class="syntaxkeyword">, </span><span class="syntaxstring">''</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">);<br /><br /> print </span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">?><br /></span></span>
  • &quot;Peter1978&quot; schrieb:


    sollte öfter die funktions referenz durchstöbern


    Das kenne ich noch von meinem Beginn, damals habe ich immer alles versucht um irgendwelche Sachen zu lösen, klappt dann irgendwann mit 250 Zeilen Kot (ja das ist hier die richtige Bezeichnung :D), und heute denke ich mir... "Oh oh, die Funktion da benutzen und ich spare mir 249 Zeilen!" ;)