2017-03-03 4 views
-1

Ich habe versucht, die folgendenPHP Ersetzen Sie das erste untere verrohrten Zeichen jeder Zeile durch Großbuchstaben

$string= 'hello world<br>this is newline<br><br>another line'; 
echo $string.'<hr><br>'; 
echo preg_replace_callback('/^[a-zA-Z0-9]/m', function($m) { 
    return strtoupper($m[0]); 
}, $string); 

die Ausgabe mit:

Hello world 
this is newline 

another line 

i des Wortes den ersten Buchstaben ändern müssen "dieses" und "ein anderes" auch. so wird der Ausgang wie folgt:

Hello world 
This is newline 

Another line 

Danke.

+3

''
ist keine neue Zeile in nichts außer einem Browser/Anwendung, die HTML gerendert wird. Sie könnten versuchen, '/ (^ |
)' oder konvertieren sie in neue Zeilen. Auch ein '.' wäre wahrscheinlich einfacher als eine Zeichenklasse, es sei denn, Sie möchten nur 'a-z' groß schreiben (wenn das der Fall ist, kann die Zeichenklasse auf '[a-z]') getrimmt werden. – chris85

+2

Und warum enthalten 'A-Z' und' 0-9'? Was sind ihre Großbuchstaben? – AbraCadaver

+1

Sie können Ihre Regex in ['(?:^| <[bh]r>) \ s * \ K [az]'] ändern (https://www.regex101.com/r/Xxfnub/1) (siehe Erklärung zu Regex 101) . Hier ist eine [PHP Demo bei eval.in] (https://eval.in/748045). –

Antwort

1

Hier ist, wie Sie erreichen, was Sie wollen:

$string= 'hello world<br>this is newline<br><br>another line<hr><br>'; 

$parts = preg_split("/<br>|<hr>/", $string); // split string by either <br> or <hr> 
$parts = array_filter($parts); // clean array from empty values 
$parts = array_map('ucfirst',$parts); // array of lines with first letter capitalized 

echo $partString = implode("<br>",$parts); 
Verwandte Themen