Dies erreichen Sie am besten mit regulären Ausdrücken.
Lassen Sie uns das, was Sie wollen, auf logische Weise aufschlüsseln: Sie möchten, dass jedes Zeichen aus der Zeichenfolge am Anfang eines Wortes steht. Der beste Weg, um diese Zeichen zu identifizieren, besteht darin, nach Zeichen zu suchen, denen Leerzeichen vorangestellt sind.
Wir beginnen also mit einem Lookbehind für dieses Leerzeichen, gefolgt von einem beliebigen Zeichen:
/(?<=\s)./
Dadurch wird jedes Zeichen gefunden, dem ein Leerzeichen vorangestellt ist. Aber - das erste Zeichen in der Zeichenfolge ist ein Zeichen in der Zeichenfolge, das Sie extrahieren möchten. Und weil es das erste Zeichen in der Zeichenfolge ist, kann kein Leerzeichen vorangestellt werden. Wir möchten also mit allem übereinstimmen, dem ein Leerzeichen oder das erste Zeichen in der Zeichenfolge vorangestellt ist , und fügen daher eine Aussage zum Beginn des Betreffs hinzu :
/(?<=\s|^)./
Jetzt kommen wir näher. Was aber, wenn die Zeichenfolge Blöcke mit mehreren Leerzeichen enthält? Was ist, wenn es ein Leerzeichen gefolgt von einem Interpunktionszeichen enthält? Wir wollen wahrscheinlich keine von denen zusammenbringen, in Fett wollen wir wahrscheinlich nur Buchstaben zusammenbringen. Wir können das mit einer Charakterklasse machen [a-zA-Z] . Und wir können mithilfe des i Modifikators festlegen, dass der Ausdruck nicht zwischen Groß- und Kleinschreibung besteht .
Am Ende haben wir also:
/(?<=\s|^)[a-z]/i
Aber wie verwenden wir das eigentlich in PHP? Nun, wir möchten alle Vorkommen des regulären Ausdrucks innerhalb der Zeichenfolge abgleichen, also verwenden wir (Sie haben es erraten) preg_match_all():
$string = "Progress in Veterinary Science";
$expr = '/(?<=\s|^)[a-z]/i';
preg_match_all($expr, $string, $matches);
Jetzt haben wir alle Zeichen, die wir extrahieren wollten. Um die angezeigte Ergebniszeichenfolge zu erstellen, müssen wir sie erneut zusammenfügen :
$result = implode('', $matches[0]);
... und wir müssen sicherstellen, dass sie alle in Großbuchstaben geschrieben sind :
$result = strtoupper($result);
Und das ist wirklich alles.
Sehen Sie, wie es funktioniert