Shop-Hilfe.com
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 03.02.2003, 14:09   #1
TP-Senior
 
Benutzerbild von Dreamflower
 
Registriert seit: Sep 2001
Ort: Iserlohn
Dreamflower macht alles soweit korrekt

Problem mit eregi


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.
__________________
Dreamflower.
Dreamflower ist offline   Mit Zitat antworten


Alt 03.02.2003, 15:13   #2
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Hi !!

Die Eckigen Klammer ([ und ]) stellen in einem regülären Ausdruck eine Zeichenklasse dar. Wenn du aber auf diese matchen willst, musst du sie escapen (wahrscheinlich haste das oben auch gemacht... aber das Forum hats zerschossen. So läufts bei mir):
PHP-Code:
<?
$eintrag 
'[LINK="##1"##2]';
$html '[LINK="http://www.webseite.de/"]';

$temp 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/" testen]',
      
$test);

echo 
$test[1]."<br>";
echo 
$test[2]."<br>";

if (
eregi($temp$html)) { echo "geht"; } else { echo "geht nicht!"; }
?>
...was auch immer dieses Script bewirken soll

Gruss Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 03.02.2003, 15:19   #3
TP-Senior
 
Benutzerbild von Dreamflower
 
Registriert seit: Sep 2001
Ort: Iserlohn
Dreamflower macht alles soweit korrekt
so, da ich jetzt schon Stunden daran hänge, habe ich sogar rausgefunden, daß diese Funktion nur ein solches Störverhalten zu Tage legt, wenn die Text-Daten, wo die Befehle drin enthalten sind ($html), von einem Formular kommen und wenn die Daten dann später aus der Datenbank geholt werden und angezeigt werden, hat diese Funktion keinerlei Probleme...
JAU! Hat wer ne Ahnung was das für ein Unterschied macht, wenn die Daten von einem Formular kommen?? Für mich gibt es keine. Aber ich sage ja noch einmal: Es hat zuvor alles wunderbar geklappt!
__________________
Dreamflower.
Dreamflower ist offline   Mit Zitat antworten
Alt 03.02.2003, 15:23   #4
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Daten die über ein Formular kommen werden meist schon gequotet (wenn das in der php.ini so eingestellt ist). Das heisst, dass " automatisch duch \" ersetz wird. Probier mal das zu überprüfen.

Gruss
Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 03.02.2003, 15:26   #5
TP-Senior
 
Benutzerbild von Dreamflower
 
Registriert seit: Sep 2001
Ort: Iserlohn
Dreamflower macht alles soweit korrekt
Zitat:
Original geschrieben von Stuck Mojo
Die Eckigen Klammer ([ und ]) stellen in einem regülären Ausdruck eine Zeichenklasse dar. Wenn du aber auf diese matchen willst, musst du sie escapen (wahrscheinlich haste das oben auch gemacht... aber das Forum hats zerschossen. So läufts bei mir):
Jou, so hab ich `s auch gemacht. Ich hab sogar noch welche drangehangen. Hätte ja sein können, daß PHP mir da auch welche wegfranzt. Hat jetzt nur hier im Forum nicht dran gedacht.
__________________
Dreamflower.
Dreamflower ist offline   Mit Zitat antworten
Alt 03.02.2003, 15:59   #6
TP-Senior
 
Benutzerbild von Dreamflower
 
Registriert seit: Sep 2001
Ort: Iserlohn
Dreamflower macht alles soweit korrekt
Zitat:
Original geschrieben von Stuck Mojo
Daten die über ein Formular kommen werden meist schon gequotet (wenn das in der php.ini so eingestellt ist). Das heisst, dass " automatisch duch \" ersetz wird. Probier mal das zu überprüfen.

Gruss
Jan
So ungefähr das wars! Es waren nicht die Slashes, sondern die "-Zeichen wurden in HTML-Code umgewandelt - sprich: " (brrr, schon wieder! So: &amp;#34 - NEIN! So: &amp;#34; )
Und deswegen konnte er das Suchmuster nicht finden. Mahlzeit.

Ich danke Dir vielmals Stuck Mojo!


Bleibt mir nur noch zu klären, wieso das sonst funktioniert hat. Habe ich wohl doch irgendwas verstückhackelt...verflixte Formular-Hieroglyphen.
__________________
Dreamflower.
Dreamflower ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Problem mit eregi Problem mit eregi
« Speichern von Daten aus der MySql in eine TXT Datei | EMail Adresse auf Existenz prüfen »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:17 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67