Deprecated: Function ereg_replace()

  • Hey PHP-Götter :)


    Hab grad meinen Uralt Webhoster mein PHP von 5.2 auf 5.3.1 updaten lassen.
    Jetzt bekomm ich den fehler "Deprecated: Function ereg_replace()"


    Meine erste frage:
    Funktioniert ereg noch, oder muss ich bei 5.3.1 schon auf preg umschreiben?


    Falls es noch geht:
    Wie war noch mal der Code das die fehler Meldung verschwindet? Irgendwie so oder? "error_reporting(E_ALL & ~E_DEPRECATED);"



    Falls es nicht mehr geht:
    Könnte mir das einer eben in preg umschreiben?

    PHP
    1. $text = ereg_replace(":)", "<img src='img/smileys/01.gif'>", $text);$text = ereg_replace("\:\(", "<img src='img/smileys/02.gif'>", $text);$text = ereg_replace(":D", "<img src='img/smileys/03.gif'>", $text);$text = ereg_replace("8)", "<img src='img/smileys/04.gif'>", $text);$text = ereg_replace(":O", "<img src='img/smileys/05.gif'>", $text);$text = ereg_replace(";)", "<img src='img/smileys/06.gif'>", $text);$text = ereg_replace("\;\(", "<img src='img/smileys/07.gif'>", $text);$text = ereg_replace("\:\|", "<img src='img/smileys/08.gif'>", $text);$text = ereg_replace("\:\P", "<img src='img/smileys/09.gif'>", $text);$text = ereg_replace(":x", "<img src='img/smileys/23.gif'>", $text);$text = ereg_replace(":@", "<img src='img/smileys/18.gif'>", $text);$text = ereg_replace(":s", "<img src='img/smileys/20.gif'>", $text);$text = ereg_replace("\(nod\)", "<img src='img/smileys/32.gif'>", $text);$text = ereg_replace("\(shake\)", "<img src='img/smileys/33.gif'>", $text);$text = ereg_replace("\(wait\)", "<img src='img/smileys/26.gif'>", $text);$text = ereg_replace("\(finger\)", "<img src='img/smileys/44.gif'>", $text);$text = ereg_replace("\(rock\)", "<img src='img/smileys/46.gif'>", $text);


    Natürlich hab ichs schon selbst probiert, aber das zickt iwie immer rum.


    Danke... :hi:

  • Hey,
    ich selber bin in PHP nicht so begabt, aber ich habe mal kurz gegoogelt :D
    Beispiel:

    PHP
    1. <?php
    2. $text = "[b ]fetter Text[/b]";//ohne das leerzeichen bei [b ]
    3. $replace = '<b>$1</b>';//bzw
    4. //$replace = '<p style="font-weight:bold;">$1</p>';
    5. $text = preg_replace("/\[b\](.*)\[\/b\]/",$replace,$text);
    6. echo $text;
    7. ?>


    Für mich sieht das so aus, als könnte man das fast genauso verwenden wie ereg...
    Vielleicht iwie so:

    PHP
    1. $text = preg_replace(":)", "<img src='img/smileys/01.gif'>", $text);


    Bin mir aber nicht sicher und kann es leider immoment nicht testen, da ich noch nicht Zuhause bin ;)

  • Habe noch was gefunden, vielleicht interresant.



    Quelle: http://www.pixel-boutique.de/e…recated-xtc_security-etc/

  • Deprecated heist, dass die Funktion veraltet ist. Sie funktioniert noch, aber könnte in den folgenden PHP-Versionen irgendwann entfernt werden.


    Damit schaltest du die Warnung ab (doof)

    PHP
    1. error_reporting(E_ALL & ~E_DEPRECATED);


    So gehts mit preg_replace (cool)
    preg_replace ist für Reguläre Ausdrücke (ich nenne sie auch die Sonderzeichen-Sprache). Sogut wie jedes Sonderzeichen hat irgendeine Funktion. RegEx zu verstehen, ist nicht sehr einfach. Die meisten Ausdrücke sehen aus, als hätte jemand einen Faceroll über die Sonderzeichenreihe der Tastatur hingelegt Kostprobe ?
    Aber keine Angst, soweit musst du RegEx nicht verstehen.


    PHP
    1. mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )


    Pattern: Was gesucht wird
    Replacement: Alle Vorkommen von Pattern werden hiermit ersetzt
    Subject: Der Ausgangstext


    Das Pattern muss zwischen zwei /

    PHP
    1. $text = 'Apfel Affe Vergaser';
    2. $text = preg_replace('/Affe/', 'Tiger', $text);
    3. echo $text; // Apfel Tiger Vergaser


    Soweit erstmal einfach oder?


    Ich zitiere mich selbst (xD): "Sogut wie jedes Sonderzeichen hat irgendeine Funktion".
    Da die Smileys aber grundsätztlich auch aus Sonderzeichen bestehten, wird folgendes Suchmuster nicht funktionieren:

    PHP
    1. $text = preg_replace('/:)/', '<Bild>', $text);


    Die Sonderzeichen müssen escaped werden. Dies macht man, wie in vielen Sprachen üblich, mit dem Backslash ( \ )


    PHP
    1. $text = preg_replace('/\:\)/', '<Bild>', $text);


    preg_replace ist Case-Sensitive.

    PHP
    1. $text = 'Apfel affe Vergaser Affe';
    2. $text = preg_replace("/Affe/", "Tiger", $text);
    3. echo $text; // Apfel affe Vergaser Tiger


    Das beeinflusst natürlich auch die Smileys. Mancheiner bevorzugt den :p , ein Anderer :P
    Lösen kann man dieses Problem mit dem i-Modifier.

    PHP
    1. $text = 'Apfel affe Vergaser Affe';
    2. $text = preg_replace("/Affe/i", "Tiger", $text);
    3. echo $text; // Apfel Tiger Vergaser Tiger



    Zuletzt noch eine kleine Eigenschaft von preg_replace:

    PHP
    1. $text = 'Apfel affe Vergaser Affe';
    2. $pattern = array( '/Apfel/', '/Affe/');
    3. $replacement = array('Fallobst', 'Tiger');
    4. $text = preg_replace($pattern, $replacement, $text);
    5. echo $text; // Fallobst affe Vergaser Tiger


    Für das Pattern und das Replacement kann man arrays angeben. Das hat den Vorteil das man nicht endlos oft preg_replace aufrufen muss.
    Das Verhalten ist simpel. $pattern[0] wird mit $replacement[0] ersetzt, $pattern[1] mit $replacement[1] usw.
    Der einzige Nachteil: Die Übersichtlichkeit leidet darunter. Man sieht nicht mehr sofort, was mit was ersetzt wird und es schleichen sich evtl. Fehler ein.



    PS: Wieso geht mein Expander nicht mehr :(
    Edit: Bug-Detected: Der Expander mag keine Kommata!


    Gruß
    florian0

  • *_________________* so mag ich das :D XD danke ^^ :)))) Coole scheiße!
    :vain: :vain: :vain: :vain: :vain: :vain:


    €: ich glaub ich hab mich verliebt *_*