Reguärer Ausdruckt für ORT.

Sebastianus

Erfahrenes Mitglied
Hallo liebe Fachgemeinde,

Ich zähle zu den Leuten, die durch reguläre Ausdrücke trotz intensiver Recherche überfordert sind und dies hoffentlich an faktischen Beispielen lernen können und daher hier kurz Hilfe sucht und erbitte, nicht "Suchfunktion" zu antworten ;)

Ich benötige einen Regulären Ausdruckt, der das Vorkommen von ausschließlich GROßBUCHSTABEN (oder eben ß) gefolgt von einem Punkt erkennt und dies per preg_replace um <b>SUCHMUSTER</b> ergänzt.

Code:
Beispiel: Aus 'Wir begrüßen alle UNSER GÄSTE. Hallo zusammen!'
sollte: 'Wir begrüßen alle <b>UNSER GÄSTE.</b> Hallo zusammen!' werden!

Vielen Dank für Eure Hilfe - ich bin ratlos! Ich versichere dem Helfer, dass ich dank des Codeschnippsels den bessere Einstieg in regex finde ;)
 
Hallo Sebastianus,

damit sollte Dir erstmal geholfen sein.
PHP:
$strText = 'Wir begrüßen alle UNSERE GÄSTE. Hallo zusammen!';
print preg_replace('#(\s)((?:[A-ZÄÖÜß]+[A-ZÄÖÜß ]*)*[A-ZÄÖÜß]\.)#', '$1<b>$2</b>', $strText);
// Wir begrüßen alle <b>UNSERE GÄSTE.</b> Hallo zusammen!

$strText = 'Wir begrüßen alle fooUNSERE GÄSTE. Hallo zusammen!';
print preg_replace('#(\s)((?:[A-ZÄÖÜß]+[A-ZÄÖÜß ]*)*[A-ZÄÖÜß]\.)#', '$1<b>$2</b>', $strText);
// Wir begrüßen alle fooUNSERE <b>GÄSTE.</b> Hallo zusammen!

Grüße
 
Müsste so gehen:
PHP:
$string  = "Wir begrüßen alle UNSERE GÄSTE. Hallo zusammen!";
$pattern = "/ ([A-ZÄÖÜß]+( [A-ZÄÖÜß]+)*\.)/";
$replace = " <b>$1</b>";

$string  = preg_replace( $pattern, $replace, $string );
An sich ist das relativ einfach: du definierst die zu findenden Zeichen (A-Z, Ä, Ö, Ü, ß) und dann noch folgende zwei Eigenschaften: direkt nach dem letzten großgeschriebenen Wort soll ein Punkt kommen, zwischen mehreren großgeschriebenen Wörtern darf ein Leerzeichen vorkommen. Und dann findest du das und packst außen herum Bold-Tags.
 
Danke für die prompte Antwort - ich bin mal wieder begeistert von der Gemeinschaft hier ;)!

Zwar verstehe ich auch das Beispiel nicht ganz, aber ich werde mich heute Abend mal komplett einlesen! Was jedoch noch nicht funktioniert ist, wenn ein Wert "DÜSSELDORF." am Anfang des Textes/Absatzes steht!

UPDATE:
ok, die Leerzeichen habe ich gefunden ;) - Danke!

PHP:
$string  = "Wir begrüßen alle UNSERE GÄSTE. Hallo zusammen!";
$pattern = "/([A-ZÄÖÜß]+([A-ZÄÖÜß]+)*\.)/";
$replace = " <b>$1</b>";
 
$string  = preg_replace( $pattern, $replace, $string );
 
Zuletzt bearbeitet:
Zurück