xci: Problel mit preg_replace()

Hi,

$test = 'hans.tdsaf432.xci';
echo preg_replace("![\w|.|-].pdf[\w|.|-]!","_",$test);

es kommt das hier raus:
yeshans_tdsaf432_xci

also ersetzt er mir das falsche ;-) Da hätt ich gleich mit str_replace arbeiten können.

Rauskommen sollte aber:
yeshans_tdsaf432.xci

Danke...

  1. $test = 'hans.tdsaf432.xci';
    echo preg_replace("![\w|.|-].pdf[\w|.|-]!","_",$test);

    soll eigentlich heissen:
    echo preg_replace("![\w|.|-].xci[\w|.|-]!","_",$test);

    1. soll eigentlich heissen:
      echo preg_replace("![\w|.|-].xci[\w|.|-]!","_",$test);

      Hab mich vertippt sorry, ja deines stimmt, kannst du mir helfen?

  2. gudn tach!

    preg_replace("![\w|.|-].pdf[\w|.|-]!","_",$test);

    mit [] werden zeichenklassen definiert. gruppiert wird mit ().

    es kommt das hier raus:
    yeshans_tdsaf432_xci

    Rauskommen sollte aber:
    yeshans_tdsaf432.xci

    willst du alle punkte durch underscores ersetzen, die nicht, das viertletzte zeichen sind? dann brauchst du nicht mal regexp, sondern kannst einfach str_replace auf einen substring anwenden.
    oder was ist dein ziel?

    prost
    seth

    1. willst du alle punkte durch underscores ersetzen, die nicht, das viertletzte zeichen sind? dann brauchst du nicht mal regexp, sondern kannst einfach str_replace auf einen substring anwenden.
      oder was ist dein ziel?

      Genau das ist das Ziel!!
      Das kann ich mit str_replace machen??

      Grüße

      1. gudn tach!

        willst du alle punkte durch underscores ersetzen, die nicht, das viertletzte zeichen sind? dann brauchst du nicht mal regexp, sondern kannst einfach str_replace auf einen substring anwenden.
        oder was ist dein ziel?

        Genau das ist das Ziel!!
        Das kann ich mit str_replace machen??

        ja, in kombination mit substr.

        http://php.net/str_replace
        http://php.net/substr

        // $str gegeben  
        $str = str_replace('.', '_', substr($str, 0, -4)).substr($str, -4);
        

        falls die letzten drei zeichen noch durchsucht werden sollen, musst du den code entsprechend abaendern.

        prost
        seth