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?12345
$fs
=
'565255'
;
$test
=
'<br>%fs:datei.ext:** Bytes</div>'
;
$result
= preg_replace(
'|%fs:(.*):\\*\\*|'
,
$fs
,
$test
);
echo
(
$result
);
Oder eher sowas?123456789101112$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 BegriffDa 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