christian: Zeichenfolge am Anfang einer Zeile

Hallo,
ich habe den Inhalt eines Datenbankfeldes in einer Variable gespeichert.

Diese Variable will ich jetzt überprüfen und immer, wenn ein "www." am Beginn einer Zeile steht, soll ein Leerzeichen am Anfang der Zeile eingefügt werden. Also " www."

Ich habe es schon hiermit probiert und der "Regex Coach" zeigt mir keine Fehler an. Wenn ich es jedoch auf meiner Seite ausführe, passiert gar nichts.

$text=preg_replace("(^www)"," www",$text);

Findet jemand spontan einen Fehler oder hat einen Alternativvorschlag?

Danke

chris

  1. Hallo!

    Hallo,
    ich habe den Inhalt eines Datenbankfeldes in einer Variable gespeichert.

    Diese Variable will ich jetzt überprüfen und immer, wenn ein "www." am Beginn einer Zeile steht, soll ein Leerzeichen am Anfang der Zeile eingefügt werden. Also " www."

    Wie wärs mit substr? Wende diese Funktion auf den String an und ermittle die ersten 4 Zeichen. Wenn diese "www." sind, dass stell halt ein Blank voran.

    mfg
      frafu

    1. Wie wärs mit substr? Wende diese Funktion auf den String an und ermittle die ersten 4 Zeichen. Wenn diese "www." sind, dass stell halt ein Blank voran.

      mfg
        frafu

      Ja, die Idee hatte ich natürlich auch schon. Allerdings soll nur ein Leerzeichen eingefügt werden, wenn das www. am BEGINN einer Zeile steht. Wenn es irgendwo anders auftaucht soll kein Leerzeichen eingefügt werden.

      1. Hello,

        Ja, die Idee hatte ich natürlich auch schon. Allerdings soll nur ein Leerzeichen eingefügt werden, wenn das www. am BEGINN einer Zeile steht. Wenn es irgendwo anders auftaucht soll kein Leerzeichen eingefügt werden.

        Woher kommen denn die "Zeilen"?

        Wenn Du z.B eine Datei mit file() einliest, oder die Strings mittels explode() aus einem Gesamtstrings in Zeilen zerlegt hast, kannst Du doch sehr leicht festellen, ob der Substruing am Anfang eines solchen Zeilenstrings steht.

        if(strpos($zeile,'www.') === 0)
          {
             $zeile = ' '.zeile;
          }

        http://de.php.net/manual/en/function.strpos.php

        Ein harzliches Glückauf

        Tom vom Berg

        http://bergpost.annerschbarrich.de
        .

        --
        Nur selber lernen macht schlau
  2. gudn tach!

    Diese Variable will ich jetzt überprüfen und immer, wenn ein "www." am Beginn einer Zeile steht, soll ein Leerzeichen am Anfang der Zeile eingefügt werden. Also " www."

    die loesung von Tom ist vermutlich die geschicktere, dennoch gehe ich auf dein regexp-problem ein:

    Ich habe es schon hiermit probiert und der "Regex Coach" zeigt mir keine Fehler an. Wenn ich es jedoch auf meiner Seite ausführe, passiert gar nichts.
    [...]
    $text=preg_replace("(^www)"," www",$text);

    das kommt daher, dass ^ standardmaessig nur den stringanfang matcht (und nicht jeden zeilenanfang). mittels des m-modifiers wuerde das verhalten sich wie gewuenscht aendern, siehe php-manual.
    also:
      $text=preg_replace('(^www)m',' www',$text);

    die (inneren) klammern sind geschmackssache, meistens werden slashes bevorzugt:
      $text=preg_replace('/^www/m',' www',$text);

    ausserdem werden fuer solche aufgaben haeufig look-ahead assertions verwendet, damit ergaebe sich dann z.b.
      $text=preg_replace('/^(?=www)/m',' ',$text);

    ach so, du wolltest eigentlich zusaetzlich den punkt matchen, also:
      $text=preg_replace('(^www.)m',' www.',$text);
    bzw.
      $text=preg_replace('/^(?=www.)/m',' ',$text);

    prost
    seth