hallo!
hab ja weiter unten (http://www.wer-weiss-was.de/cgi-bin/forum/showarchiv…) was wegen ersetzen gefragt und hab mich mal hingesetzt; bekomme aber gerade eine merkwürdige fehlermeldung, mit der ich nix anfangen kann bzw. weiss nicht, wo der fehler liegt!
vielleicht kann mich ja wer erleuchten 
fehlermeldung lautet:
Warning: preg\_replace(): Unknown modifier '8' in ...
Warning: preg\_replace(): Unknown modifier '9' in ...
(die zeilenangabe sind dann die preg_replaces)
folgendes ist mein testprogramm:
ich lasse
hallo hall [media]8[/media] mal kucken! hm, was geht??? [MEDIA]9[/MEDIA]
durch meine funktion laufen, die wie folgt aussieht:
function mediainc($str)
{
preg\_match\_all(sql\_regcase("/\[media\]([0-9]+)\[\/media\]/"), $str, $matches);
$i=0;
while (count($matches[0])\>$i)
{
$id=$matches[1][$i];
// Aus Datenbank $typ und $datei holen
// Ersetzen
if ($typ==1) // Graphik
{
$img="";
$str=preg\_replace($matches[0][$i], $img, $str, 1);
}
if ($typ==2) // Datei
{
$src="[".$datei.""; $str=preg\_replace($matches[0...](media/%2522.%2524datei.%2522)
irgendwie vermute ich da probleme mit irgendwelchen zeichen, hab aber weiter keine ahnung…
hoffe jemand weiss mehr!
greets
Geisterkarle
Hallo,
ich denke, es liegt an der Funktion sql_regcase(), die du benutzt. Lass das mal weg und schreib als letztes Zeichen der Regex ein „i“ für PCRE_CASELESS (also case insensitive).
Das müsste dann so aussehen:
/\[media\]([0-9]+)\[\/media\]/i
Daniel
Das müsste dann so
aussehen:
/[media]([0-9]+)[/media]/i
Daniel
hiho!
hab ich mal getestet, aber der fehler bleibt 
Hallo,
sorry, ich habe gerade gesehen, was hier falsch läuft. Du setzt einfach die Ergebnisse des Regex oben in weitere ein. Das geht so nicht. Ein Regex muss Delimiter haben, d.h. zwei Zeichen an Anfang und Ende, die die Grenzen klar machen. Üblicherweise nimmt man zwei Slashs. Außerdem solltest du natürlich auch wieder nach [media]Zahl[/media] suchen und nicht nur nach der Zahl.
Du müsstest also Folgendes Schreiben:
$str=preg_replace("/[media]".$matches[0][$i]."[/media]/i", $img, $str, 1);
Wenn ich mich jetzt nicht vertan habe, sollte das gehen.
Am besten wäre allerdings, wenn du preg_replace_callback nehmen würdest und in der callback-Funktion dann deine Datenbankabfrage erledigen würdest.
Daniel
thx
das war der fehler!
das mit der callback funktion kann ich mir ja noch irgendwann überlegen, aber bin grad unter zeitdruck, so dass ich das nich nochmal umschmeissen will 
greets
Geisterkarle