Probleme beim Auslesen und Weiterverarbeiten einer Zeichenkette

schranzbaum

Mitglied
Hallo, folgendes Problem:

ich habe eine Zeichenkette in der Anrede und Namen drin stehen können, z.b. Herr Müller. Jetzt möchte ich, das die Anrede beispielsweise rot dargestellt wird, dafür mal nachfolgend den Code:

Code:
$string="Herr Müller";

$pos = strpos ($string, Herr);
if ($pos === false) 
{ } else { echo str_replace ( "Herr","<font color='red'>Herr</font>", $string ); $vorhanden="ja";}

$pos = strpos ($string, Frau);
if ($pos === false) 
{ } else { echo str_replace ( "Frau","<font color='red'>Frau</font>", $string ); $vorhanden="ja";}

if ($vorhanden!="ja") { echo $string; }

dies bewirkt, das, wenn in der Zeichenkette $string Herr Müller steht, das Herr rot dargestellt wird, steht da Frau drin, wird Frau rot dargestellt, steht weder Herr noch Frau drin, wird nur der string ohne farbliche Kennzeichnung dargestellt. Soweit, so gut. Jetzt das Problem:
Wenn Herr und Frau drinsteht, wird der string auch zweimal ausgegeben, einmal mit Frau in rot, einmal mit Herr in rot. Was mir auch einleuchtet, aber das soll ja nicht sein, sondern $string soll in dem Fall nur einmal ausgegeben werden und zwar mit beiden Anreden in rot.

Aber eigentlich soll auch immer nur die Anrede rot dargestellt werden, wenn sie am Anfang steht, also wenn
Code:
$string="Herr Müller und Frau Meier";
dann das Herr in rot, bei
Code:
$string="Müller und Frau Meier";
nichts in rot.

Irgendwie dreh ich da zur Zeit ne Schleife, und vor lauter experimentieren komm ich nicht auf die wahrscheinlich einfache Lösung.
Weiss von Euch jemand Rat?

Vielen Dank im voraus
 
Zuletzt bearbeitet:
Probier mal Folgendes mithilfe eines regulären Ausdrucks:
PHP:
<?php

	$string = 'Frau Meier und Herr Müller';
	$vorhanden = false;

	if( $string = preg_replace('/^(Herr|Frau)/', '<span style="color:#f00">\\1</span>', trim($string)) ) {
		$vorhanden = true;
	}
	if( $vorhanden ) {
		echo $string;
	}

?>
 
Zuletzt bearbeitet:
das klappt ja hervorrgand, tausend dank, das einzige Problem, was ich jetzt noch habe, ist das bei $string="Müller und Frau Meier" oder bei $string="Frau Müller und Frau Meier" auch die hinteren beiden Anreden von Meier in rot dargestellt bekomme.

Mein Ansatz wäre jetzt, vorher zu überprüfen, ob in $string an den ersten 4 Zeichen Herr oder Frau vorkommt, wenn nicht, dann soll direkt $string ausgegeben werden.

Wenn doch, dann soll überprüft werden, ob nochmal Herr oder Frau in $string drin vorkommt, wenn dies der Fall ist, soll nur die erste Anrede in rot dargestellt werden.

Ich meine auch, dies irgendwie durch diverse Schleifen machen zu müssen, aber irgendwie stehe ich da auf dem Schlauch, an der Sache bastel ich schon seit 8.00 Uhr rum, und hab vorher gedacht, das mach ich mal eben. Super.

Hast du noch n Tip?
 
Zurück