php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.10.2004, 01:34  
Gast
 
Beiträge: n/a
Standard preg_replace, mixed Suchmuster, mixed Ersatz problem?

Hi,

hab mich durch die Threads gewühlt, komm nicht weiter...
Ich will in meinem code drei beliebige Zahlen innerhalb eckiger Klammern [234] mit [++$zeilen_nr] austauschen
Bei diesem Code wird keine Übereinstimmung gefunden:
Code:
$pattern = '/$quelle20041022\[*\]/i';
$replace = '$quelle20041022[++$zeilen_nr]';
$s = preg_replace ($pattern, $replace, $zeichenkette);
Muß ich den Ersatz auch escapen? (komm ich aber auch nicht weiter)
Beschreibung: mixed preg_replace ( mixed Suchmuster, mixed Ersatz, mixed Zeichenkette [, int Limit])
http://de3.php.net/manual/de/function.preg-replace.php

Und so gibt es diese Fehlermeldung:
Code:
$pattern = '/$quelle20041022\[???\]/i';
$replace = '$quelle20041022[++$zeilen_nr]';
$s = preg_replace ($pattern, $replace, $zeichenkette);
Warning: Compilation failed: nothing to repeat at offset 19 in \regex_2.php on line 39

Kann mir jemand helfen?
Merci, twinx
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.10.2004, 08:12  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Hallo,

ich glaube, Dein Problem ist (vorerst) viel einfacher
Du schreibst
Code:
$pattern = '/$quelle20041022\[*\]/i';
, ich schlage aber
Code:
$pattern = "/$quelle20041022\[*\]/i";
vor.
__________________
Cheers, Marco
marsch ist offline  
Alt 27.10.2004, 12:25  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von marsch
Du schreibst
Code:
$pattern = '/$quelle20041022\[*\]/i';
, ich schlage aber
Code:
$pattern = "/$quelle20041022\[*\]/i";
vor.
Hi marsch :wink: ,
also einfache ' Anführungszeichen gegen " doppelte Anführungszeichen austauschen, hab ich gemacht.
Code:
$pattern = "/$quelle20041022\[*\]/i";
$replace = "$quelle20041022\[++\$zeilen_nr]";
$ergebnis = preg_replace ($pattern, $replace, $zeichenkette);
// print (sprintf ("%s\n", $s));
echo $ergebnis;
... aber da tut sich nichts, $zeichenkette wird unverändert ausgegeben. Nur wenn ich bei [++\$zeilen_nr] das Dollarzeichen nicht escape, dann schimpft PHP über eine Undefined variable.
Das bringt es auch nicht:
Code:
$replace = "$quelle20041022\[\+\+\$zeilen_nr]";
Wegen den Anführungszeichen hatte ich mich hier an einem Bsp. von Dir orientiert:
Code:
<?php

$s = 'das hier interessiert keinen... >"AppDirectory"="c:\test"< hier geht der String weiter...';
$pattern = '/\"AppDirectory\"\s*=\s*\"c:\\\\test\"/i';
$replace = '"AppDirectory"="c:\test\test"';
$s = preg_replace ($pattern, $replace, $s);
print (sprintf ("%s\n", $s));

?>
http://www.phpfriend.de/forum/viewto...=164493#164493
 
Alt 27.10.2004, 12:33  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Hallo,

ist "$quelle20041022" eine Variable, oder muss das $-Zeichen auch matchen?
__________________
Cheers, Marco
marsch ist offline  
Alt 27.10.2004, 14:46  
Gast
 
Beiträge: n/a
Standard

Hi,
Zitat:
Zitat von marsch
ist "$quelle20041022" eine Variable, oder muss das $-Zeichen auch matchen?
"$quelle20041022 ist eine Variable!
Aber so könnte ich ja auch suchen, wäre dann weniger kompliziert.
Code:
$pattern = "/20041022\[*\]/i";
$replace = "20041022\[\+\+\$zeilen_nr]";
$ergebnis = preg_replace ($pattern, $replace, $zeichenkette);
echo $ergebnis;
aber es funktioniert auch nicht.

Ich habe hunderte von diesen Zeilen:
Code:
echo "zeile: 2. settle 107.5:" . $quelle20041022[137] . "
\n";
echo "zeile: 2. traded 107.5:" . $quelle20041022[138] . "
\n";
echo "zeile: 2. interest 107.5:" . $quelle20041022[139] . "
\n";
und als Anfänger, hab ich von Hand schön brav hochnummeriert $quelle20041022[139], bis ich auf die Idee kam, ich könnte ja auch sowas schreiben:
Code:
echo "zeile: 1.($zeilen_nr) traded 107:" . $quelle20041022[++$zeilen_nr] . "
\n";
echo "zeile: 1.($zeilen_nr) interest 107:" . $quelle20041022[++$zeilen_nr] . "
\n";
ich könnte diesen Quelltext natürlich mit zB. UltraEdit suchen und ersetzen aber leider krieg ich es da auch nicht hin und nun prob ich es in PHP...
 
Alt 27.10.2004, 15:18  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Aha, Du willst Deinen Quelltext ändern, also ist z.B. $quelle20041022[137] keine Variable buw. Wert, sondern $quelle20041022 ist Teil des Strings?
__________________
Cheers, Marco
marsch ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
preg_replace was muss man escapen?, preg_replace offset setzen, php preg_replace suchmuster im suchmuster, php preg_replace suchmuster, preg_replace suchmuster, preg_replace * suchmuster, uestudio undefined variable, ultraedit suchmuster, eregi_replace klammer ersetzen, preg_replace offene klammer ersetzen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:55 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.