Hallo, (hätte den Titel auf: "Das ewige Leiden eines Programmierers und seine intelligenten Problemfälle" umbenennen sollen...)
hab ein verdammt hunzgemeines Problem mit eregi(). Ich verzweifle hier gerade mächtigst! Es will einfach nicht gehen.
Ich würde ja gerne den kompletten zusammenhängenden Quelltext einfügen, aber das würde den Rahmen sprengen. Aber ich habe den Quelltext auf sein Hauptproblem gekürzt. Leider funktioniert dieser...aber genau so steht er auch in der mit dem kompletten System zusammenhängendem Quelltext.
PHP-Code:
$eintrag = '[LINK="##1"##2]';
$html = '[LINK="http://www.webseite.de"]';
$temp = str_replace('"', '\"', str_replace('[', '\[', str_replace(']', '\]', $eintrag)));
$temp = str_replace('##1', '([^"]+)', str_replace('##2', '([^]]+)?', $temp));
echo "##".$temp."##<br>";
echo "##".'\[LINK=\"([^"]+)\"([^]]+)?\]'."##<br>";
echo "##".$html."##<br>";
echo "##".'[LINK="http://www.webseite.de/"]'."##<br>";
ereg( '\[LINK=\"([^"]+)\"([^]]+)?\]',
'[LINK="http://www.webseite.de/"]',
$test);
echo $test[1]."<br>";
echo $test[2]."<br>";
if (eregi($temp, $html)) { echo "geht"; } else { echo "geht nicht!"; }
Der Qualtext erzählt folgendes: Es wird ein bestimmter Teil nach $html gespeichert, dann wird ein regulärer Ausdruck nach $eintrag gespeichert. (hier muß ich ja leider die beiden Variablen setzen, weil die von einer Datei kommen...)
Nun werden wichtige Zeichen im $eintrag ersetzt, damit dieser als ein regulärer Ausdruck funktionieren kann.
Dann mache ich einen Test und gebe beide Variablen aus (hier natürlich unsinnig - aber nur zum Test, ob auch alle Variablen den gleichen Inhalt haben) und danach schreibe ich HAARGENAU - im Klartext - einen regulären Ausdruck, wie er hätte sein müssen, wie am Ende des Skriptes eben. Bei diesem Test kommt das richtige Ergebnis, daß $test[1] mit
http://www.webseite.de/ gesetzt wurde und $test[2] mit nüx. Super! Aber danach werden die Variablen $temp und $html genutzt um diesen regulären Ausdruck nochmal auszuführen, die genau den gleichen Sch*** haben müssen (nur in Variablen übergeben), aber er gibt den String: geht nicht! aus...Also hat er das Suchmuster in $html NICHT GEFUNDEN!!!
Ich bin am Verzweifeln! Und wie es bei Programierern auch immer so ist, hat das alles super funktioniert - ohne Probleme und das ist jetzt auch Wochen her, seit ich daran etwas gemacht habe und dann das auf einmal...keine neue PHP-Version (4.1.2)...nix.