ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
399
399
EMPFEHLEN
-
Hallo!
Ich habe ein Verzeichnis, in dem Dateien mit folgendem Beispielinhalt liegen:
Nun versuch ich mich an einer Suchfunktion, mit preg_match() die derweilen so aussieht:PHP-Code:<?php
$titel="Titel";
$beschreibung="Beispiel";
$keywords="key1,key2,key3";
?>
Wenn ich jetzt die suche starte, wird offensichtlich nur im Titel durchsucht. Nicht aber in Beschreibung oder in den Keywords. was ist da mein Fehler?PHP-Code:// Titel ermitteln
preg_match("=$titel\=\"(.*)\";=siU", $str, $title);
// Beschreibung ermitteln
preg_match("=$beschreibung\=\"(.*)\";=siU", $str, $descr);
// Keywords
preg_match("=$keywords\=\"(.*)\";=siU", $str, $keyw);
wenn ich mir $title[1].$descr[1].$keyw[1] augeben lasse sieht das in dem Beispiel so aus:
TitelTitelTitelGeändert von kamp (20.06.11 um 15:37 Uhr)
-
Das $ am Anfang des Pattern bedeutet Textanfang. Wenn du das $ als Zeichen verwenden willst, dann musst du es escapen.
\$
PHP-Code:preg_match("=\$titel\=\"(.*)\";=siU", $str, $title);
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Stimmt, da hast nu natürlich recht. Hab das $ nun in jeder Zeile escaped, aber wenn ich nun $title[1].$descr[1].$keyw[1] ausgeben lassen, habe ich gar keinen Wert mehr?
und wenn ich mir die kompletten arrays ausgeben lasse siehts so aus:
Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => )
weil ich direkt nach den preg_match folgenden code habe:
Code :1 2 3 4 5 6 7 8 9
if(!isset($title[1])) { $title = array('',''); } if(!isset($descr[1])) { $descr = array('',''); } if(!isset($keyw[1])) { $keyw = array('',''); }Geändert von kamp (20.06.11 um 16:02 Uhr)
-
Es war doppelt falsch!
Du umgibst dein Pattern mit doppeltem Anführungszeichen. Darin hast du $titel. Dies wertet PHP als Variable mit dem Namen $titel.
Nun haben wir ein \ davor gesetztPHP-Code:$pattern = "=$titel\=\"(.*)\";=siU";
var_dump($pattern);
// ergibt '=\="(.*)";=siU'
// da $titel durch den Inhalt der nicht initialisierten Variable $titel ersetzt wird
PHP interpretiert '\$titel' nicht mehr als Variable, sondern als String '$titel'
Jetzt haben wir zwar $titel im pattern, jedoch wird das $ am Anfang des Patterns vom RegExp für Anfang der Textes intepretiertPHP-Code:$pattern = "=\$titel\=\"(.*)\";=siU";
var_dump($pattern);
//ergibt 0=$titel\="(.*)";=siU0'
Mein Tipp. Patterns immer in einfachen Anführungszeichen schreiben, damit diese nicht durch PHP geparst werden. Ausser natürlich, man stellt das Pattern dynamisch zusammen.PHP-Code://entweder
$pattern = "=\\\$titel\=\"(.*)\";=siU";
//oder (ist eher mein Favorit)
$pattern = '=\$titel\="(.*)";=siU';
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
herzlichen dank, so funktionierts
-
Was genau hast du eigentlich vor? Wenn das eine PHP Datei ist, kannst du die richtige doch einfach einbinden und die Werte auslesen. Oder nimm sonst einfach eine INI Datei.
Ähnliche Themen
-
Regulärer Ausdruck
Von messmar im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 25.01.08, 13:36 -
Regulärer Ausdruck
Von ddhb im Forum PHPAntworten: 3Letzter Beitrag: 12.02.07, 17:34 -
Regulärer ausdruck
Von liquidbeats im Forum PHPAntworten: 8Letzter Beitrag: 09.09.05, 08:26 -
Regulärer Ausdruck
Von Benzol im Forum .NET ArchivAntworten: 3Letzter Beitrag: 28.01.05, 11:58 -
Regulärer Ausdruck
Von Fluctuator im Forum PHPAntworten: 9Letzter Beitrag: 17.03.04, 13:38





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren