Zeichenfolge am Anfang einer Zeile
christian
- php
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
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
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.
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
.
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