eregi_replace
Dornii
- php
Hallo, habe ein Problem,
ich möchte mit eregi_replace in einem String nach einem bestimmten Suchmuster suchen und dieses dann gegebenenfalls ersetzen.
So hab ich mir das gedacht:
for ($z=0; $z<$anzahl; $z++) {
$zeilen = eregi_replace ("(define('$schluessel[$z]', ')(*)(');)","\1 $werte[$z] \3",$zeilen);
}
Leider mach ich dabei irgendwas verkehrt und komme nicht dahinter, was das sein könnte.
Im Browser gibts diese Fehlermeldungen:
Warning: REG_BADRPT: in c:\apache\htdocs\test\test.php on line 17
Warning: REG_BADRPT: in c:\apache\htdocs\test\test.php on line 17
Warning: REG_BADRPT: in c:\apache\htdocs\test\test.php on line 17
...
Wäre überaus dankbar für Hilfe.
In der error-log steht noch, dass in der browscap.ini in zeile 8206 ein Fehler ist. Das wäre das hier:
browser=AE/2.1(Linux)
Liegts vielleicht an dem?
hi du :)
So hab ich mir das gedacht:
for ($z=0; $z<$anzahl; $z++) {
$zeilen = eregi_replace ("(define('$schluessel[$z]', ')(*)(');)","\1 $werte[$z] \3",$zeilen);
}
hmhm ich hab das eben mal genauso übernommen wie du da geschrieben hast und für die Variablen Schluessel, Werte usw. irgendwas eingesetzt.
Ich würde erstmal sagen, dass du bei...
for ($z = 0; $z < $anzahl; $z++)
{
$zeilen = eregi_replace ("(define('$schluessel[$z]', ')(*)(');)","\1 $werte[$z] \3", $zeilen[$z]);
}
"$zeilen" vergessen hast [$z] für die entsprechende Zeile anzugeben.
Zudem mag PHP deinen * nicht. Ich hab daraus mal ein .* gemacht.
Weiterhin bezweifle ich stark, dass PHP mit deinen ganzen Klammern nicht durcheinander kommt.
Versuch mal die Klammern in eckige Klammern zu setzen. Also so:
for ($z = 0; $z < $anzahl; $z++)
{
echo $zeilen = eregi_replace ("(define[(]'$schluessel[$z]', ')(.*)('[)];)","\1 $werte[$z] \3", $zeilen[$z]);
}
Aber irgendwo hängts scheinbar immernoch... was für nen komplizierten Code baust da zsam??
Ich tipp noch was wenn ich mehr hab.
LG,
Robert
PS: Auch mal lesen: http://www.selfphp.info/funktionsreferenz/regulaere_ausdruecke_posix/eregi_replace.php
Juhuu, es geht:
for ($z=0; $z<$anzahl; $z++) {
$zeile = eregi_replace ("(define[(]'$schluessel[$z]', ')(.*)('[)];)","\1 $werte[$z] \3",$zeile);
}
echo $zeile."<br>";
$zeilen war eigentlich verkehrt, weil es war kein Array, sondern eben nur eine Zeile. Es lag an den Klammern und dem Punkt vor dem Stern.
Danke, super.