PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : string ersetzungen


Art
06.08.2002, 09:41
hi,

ich kriege es zum verrecken nicht hin.


/* ich habe ein array aus einer datenbank was in etwas so aussieht: */

$arr = array("ICE", "Bahnhof", "IC");

/* und natürlich einen Text ebenfall aus einer DB */

$text = "ICE Bahnhof ICE IC ICE";

/*




jetzt sollen alle übereinstimmungen in text und array durch etwas anderes ersetz werden. z.b.:


/* hier natürlich irgendwie ne schleife */

$text = str_replace($arr[$i], "<b>$arr[$i]</b>", $text);



habe alles versucht, ereg, ereg_replace, preg_match, das problem ist, das er immer irgendwann auch das "IC" in "ICE" ersetzt und ich so (der tag der ersetzt wird ist etwas komplexer) eine verschachtelung kriege. ich habe es zwar geschafft, das "IC" dann nicht mehr ersetzt wird, wenn "ICE" schon durchlaufen wurde, aber es sollen alle begriffe des arrays mit allen vorkommen im text ersetzt werden.

weis jemand rat?

thx art


Lord_Otter
06.08.2002, 15:59
Das müsste eigentlich gehen.
Ich teste das mal und schreibe ein Skript, das diese Aufgaben erledigt.
Das poste ich dann hier.
Warte noch solange.

Lord_Otter
06.08.2002, 16:18
Okay.
Ich habe ein kleines Programm programmiert:

<html>
<body>
<?php
$ersetzen=
array("" =>"<b>",
"" =>"<i>",
"" =>"</b>",
""=>"</i>");
function Ersetz($ersetzen)
{
global $text;
foreach($ersetzen as $ori=>$new)
{
$text=str_replace($ori,$new,$text);
}
}
$text="Dicker Text Kursiver Text";
Ersetz($ersetzen);
echo $text;
?>
</body>
</html>

Dieses Programm ersetzt "" zu "<b>", "" zu "<i>",
"" zu "</b>" und "" zu "</i>".
Mit der Funktion "Ersetz" kann man dies erledigen.
Ich habe hier ein assoziatives Array gewählt, wodurch nur ein Array benötigt wird.

Alles klar ?

Art
06.08.2002, 22:24
jo. dabei gehst du davon aus, dass du schon irgendwelche "tags" im text hast, soweit ich das verstehe, das wäre schön. ich habe das jetzt irgendwie hingekriegt indem ich bei jedem treffer den gesuchten string in einen pseudo-tag wickle und mit einem negierten preg_match prüfe. ist ein ziemlicher wust funzt aber anscheinend... bis jetzt :rolleyes: