ereg Suchmuster - wie funktionierts?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktualisieren
code
dank
datei
definition
ergebnis
ersatz
folgendes erreichen
funktion
http
manual
melde
referenz
stellen
syntax
test
text
textdatei
url
verstand
-
Diese Suchmuster sehen für mich noch sehr kryptisch aus..
Ich möchte folgendes erreichen: aus einem Text, wo vielleicht (also nicht immer) eine definierte Zeichenfolge ist, soll diese entfernt werden und an deren Stelle ein Variablenwert eingesetzt werden:
<?php $fs="565255"; $test="<br>%fs:datei.ext:** Bytes</div>"; echo ereg_replace('(%fs:)(*)(:**)',$fs,$test); ?>
Also in den Bereich, der "%fs:(irgendwas):**" heißt, soll komplett durch $fs ersetzt werden. Ergebnis soll also sein: "565255 Bytes"
Hintergrund ist, daß dieser Quelltext Teil einer function ist, in der ich eine Textdatei einlese und zeilenweise ausgebe, und an ein paar Stellen solche Definitionen wie in $test vorkommen, von denen ich datei.ext herauskopiere und die Dateigröße ermittle, die dann in $fs gespeichert wird.
Derzeit bekomme ich den Fehler:
Warning: ereg_replace() [function.ereg-replace]: REG_BADRPT in test.php on line ..
wie würde das korrekte ereg_replace-Suchmuster lauten?
Wo kann ich mit eine Übersicht zu den möglichen Suchmustern ansehen (webseite, irgendwo auf php.net muss es das ja geben!)? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Die ereg_*-Funktionen gibts nicht mehr; Ersatz sind die preg_*-Funktionen (arbeiten fast identisch). Das sollte dir PHP auch melden sofern E_DEPRECATED aktiviert ist, sonst dringend mal auf eine aktuelle Version aktualisieren.
Siehe:
http://de2.php.net/manual/de/book.pcre.php
Zur Syntax von Regex:
http://de2.php.net/manual/de/reference.pcre.pattern.syntax.php
Beitrag zuletzt geändert: 2.6.2013 3:49:50 von chatter -
Suchst du etwa sowas?
$fs = '565255'; $test = '<br>%fs:datei.ext:** Bytes</div>'; $result = preg_replace('|%fs:(.*):\\*\\*|', $fs, $test); echo($result);
Oder eher sowas?$text = <<< ETX %fs:file.txt:** Bytes %fs:datei.ext:** Bytes %fs:unknown.bin:** Bytes %fs:ereg.php:** Bytes ETX; $result = preg_replace_callback('|%fs:(.*):\\*\\*|', function($args) { return file_exists($args[1]) ? filesize($args[1]) : $args[0]; }, $text); echo($result);
-
@chatter: Danke für den Hinweis; ich hab hier noch eine offline-PHP 5.0-.chm-Referenz, die ist wohl etwas alt
Danke auch für die Links, "PCRE" - danach hätte ich nie gesucht, mir ein völlig neuer Begriff Da will ich mich dann hineinstudieren.
@hackyourlife: die Variabeln waren fasst willkürlich gewählt, aber fs denk ich mir auch FileSize :) - aber in diesem Fall tut es der erste Code; der zweite liegt außerhalb meines Verstandes
Danke für deine Unterstützung, der erste Code ist perfekt -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage