Mario: alles ab letztem Leerzeichen löschen

Hallo,

1. folgendes Problem. Ich möchte aus einem String alles ab dem letzten Leerzeichen löschen:

$original = "Heute ist ein schöner Tag";
$ergebnis = "Heute ist ein schöner";

Mit folgendem preg_replace bekomme ich alles bis zum ersten Leerzeichen weg:

$original = "Heute ist ein schöner Tag";
$ergebnis = preg_replace("=[1]*=", "", $original);
$ergebnis = " ist ein schöner Tag";

Kann mir jemand helfen?

2. Ich suche seit ewigen zeiten ein ordentliches Tutorial zu den regulären Ausdrücken unter PHP, kennt vielleicht jemand so etwas?

Viele Grüße und Dank im Voraus,

Mario.


  1. ^ ↩︎

  1. Hi,

    Mit folgendem preg_replace

    ich verstehe nicht, wieso bei solch einfach Dingen immer gleich so etwas Teures wie eine Regular Expression bemüht werden soll. Schau doch einfach mal bei den String-Funktionen von PHP, was Du dort findest.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi Cheatah,

      ich brauche aber etwas mit tempo. Jede tausendstel zählt. Mit den PHP-Funktionen müßte ich erst die Position des letzten Leerzeichens bestimmen, dann ab der ersten bis zu dieser Position ausschneiden.

      Ich schau mir trotzdem zuerst die ReExp-Tutorials an.

      Vielen Dank erstmal,

      Mario

      1. hi!

        ich brauche aber etwas mit tempo.

        eben! regexp sind i.a.r. langsamer als optimierte string-funktionen.

        (beachte den blau hinterlegten tipp auf http://www.php.net/manual/en/function.preg-match.php)

        prost
        seth

        1. Hallo Seth,

          vielen Dank für Deine Hilfe,

          trotzdem auch diese Variante - nach einigem probieren - für alle die es interessiert:

          $description = preg_replace("=[^ ]*$=", "", $description); // Für hinten
          $description = preg_replace("=[1]*=", "", $description); // Für vorn

          Sinn des Ganzen: aus einer Datei 300 Bytes ausgeschnitten, dann das erste und letzte verstümmelte Wort entfernt.

          Viele Grüße,

          Mario


          1. ^ ↩︎

  2. Hallo!

    1. folgendes Problem. Ich möchte aus einem String alles ab dem letzten Leerzeichen löschen:

    $original = "Heute ist ein schöner Tag";
    $ergebnis = "Heute ist ein schöner";

    Man könnte sich ja auch alles bis zum letzten Leerzeichen holen.

    preg_match("/^(.*)(\s)/", $original, $ergebnis);
    echo $ergebnis[1];

    MfG, André Laugks

    --
    L-Andre @ gmx.de
  3. hi Mario!

    wie Cheatah schon sagte: mit nicht-regexp-funktionen geht das effizienter.
    ich wuerde es mit folgenden funktionen versuchen:
    strrchr http://www.php.net/manual/en/function.strrchr.php
    substr http://www.php.net/manual/en/function.substr.php

    gute regexp-seiten sind die auf
    http://www.php.net/manual/en/ref.pcre.php
    http://www.perldoc.com/perl5.8.4/pod/perl.html
    verlinkten.

    prost
    seth

    1. hi Mario!

      hab's mal ausprobiert:

      $res=substr($str,0,strrpos($str, ' '))

      ist bei mir fast 2.5 mal so schnell wie

      preg_match('/^(.+) [^ ]+$/', $str, $res);

      (und das sogar relativ unabhaengig von der laenge des strings)

      prost
      seth