[PHP] String herausfiltern und verlinken

Toby

Cadet 4th Year
Registriert
Mai 2003
Beiträge
107
Hallo Leute,

ich habe in meinem Script die Variable $ergebnis.

Diese Variable ist mit foldendem Inhalt gefüllt:

Auch Yamaha-Fahrer haben schon mal ein paar Hindernisse im Weg

In einer anderen Variable nämlich $suchwort ist das Wort Yamaha gespeichert.

Wie schaffe ich es im obigen Satz das Wort Yamaha zu verlinken ??

Das Ergebnis soll dann wie folgt aussehen:
Auch Yamaha-Fahrer haben schon mal ein paar Hindernisse im Weg

so long
Toby
 
Zuletzt bearbeitet:
Code:
 $neu = strtr ( $ergebnis, "Yamaha", "<a href="http://www.irgendwas.de/>Yamaha</a>" );
 
Gibt es ausserdem die Möglichkeit bei folgendem String, gespeichert in Variable$string

Die Motorräder könnt Ihr auf meinem Webspace unter http://www.meinname.de/pics/yamaha.jpg betrachten.

die URL zu zensieren ??
Evtl. den Text zwischen 'http' und 'jpg' durch Sterne (***) zu ersetzen ???

Klaro -, loopo hat mir gezeigt ,wie Strings ersetzt werden, ist auch kein Problem mehr, doch die URls sind in meinem Project von Ihrer Zeichenlänge total variabel :rolleyes: ....

Wie würdet Ihr sowas lösen ??

gruss
Toby
 
Zuletzt bearbeitet:
Original erstellt von Steffen
Das Problem mir der Variabeln Länge sehe ich nicht...
PHP:
$string = str_replace( "http://www.meinname.de/pics/yamaha.jpg", "*zensiert*", $string );


Das Problem ist, die URL ist nicht fest in einer Variable gespeichert.

Das Wort Yamaha eben schon.

Ok gut, ich müsste dann aus der Variable $string erstmal die URL rausziehen und in eine Variable schreiben... *grübel*....

Nur wie ziehe ich eine unterschiedlich lange Zeichenkette aus einem String ??
 
Zuletzt bearbeitet:
das ist doch vollkommen egal, wie lang oder kurz der String ist !? ich verstehe dein Problem nicht ganz :confused_alt:
 
gut mag sein, dann steh ich grad auf der Leitung...

Aber wie bekomme ich denn die URL in eine Variable geschrieben ?? (damit ich eben diese später z.B. mit str_replace bearbeiten kann)

In der Variable $string steht zum Beispiel

Tesxt1 Text2 text3 text4 http://www.irgendwas.de/bild.jpg txt5 text6 text7


und von diesen Strings hab ich jetzt ein paar hundert.
Alle in Arrays gespeichert von $string[1].....$string[498]

Und in jedem String steht eine andere URL. Und eben genau diese URL möchte ich rauszensieren.
 
Zuletzt bearbeitet:
OK, dann versuch das mal so:
PHP:
$string = "Tesxt1 Text2 text3 text4 http://www.irgendwas.de/bild.jpg txt5 text6";
$string = preg_replace( "/(http|ftp):\\/\\/([\\S]*)/", "*zensiert*", $string );
Das jetzt zu erklären wäre zu aufwändig, dazu musst du dich mal in reguläre Ausdrücke einlesen. Zu den preg_*-Funktionen gibt es seitenlange Ausführungen im PHP Manual: http://de2.php.net/manual/en/pcre.pattern.syntax.php

Der reguläre Ausdruck hier geht davon aus, dass am Anfang der URL http:// oder ftp:// steht und dass die URL kein Leerzeichen enthält.
 
Zuletzt bearbeitet:
ok langsam dämmerts

ich habe mir dafür eine eigene Funktion geschrieben, da ich mit den regulären Ausdrücken nie klarkomme :p

dabei wird zuerst nach http:// gesucht, dann der Text davor gespeichert
dann wird die Länge der URL getestet
der Rest gespeichert
die URL wird bearbeitet
zum Schluss wird Anfang, Link und Rest wieder zusammengefügt
 
jetzt wäre es natürlich interessant, welche Methode schneller ist ;) reguläre Ausdrücke sind ja auch nicht gerade die zügigsten Funktionen :) werde ich vielleicht mal austesten wenn ich Lust habe :p
 
Ich tippe bei zahlreichen Durchläufen erst recht auf preg_replace(), weil man dieser Funktion als zu durchsuchenden String auch ein Array mit Strings übergeben kann. Aber der Vergleich würde mich auch interessieren, lass das mal mit 1000 Strings oder sowas in der Richtung durchlaufen.
 
Original erstellt von Steffen
OK, dann versuch das mal so:
PHP:
$string = "Tesxt1 Text2 text3 text4 [url]http://www.irgendwas.de/bild.jpg[/url] txt5 text6";
$string = preg_replace( "/(http|ftp):\\/\\/([\\S]*)/", "*zensiert*", $string );
Das jetzt zu erklären wäre zu aufwändig, dazu musst du dich mal in reguläre Ausdrücke einlesen. Zu den preg_*-Funktionen gibt es seitenlange Ausführungen im PHP Manual: http://de2.php.net/manual/en/pcre.pattern.syntax.php

Der reguläre Ausdruck hier geht davon aus, dass am Anfang der URL http:// oder ftp:// steht und dass die URL kein Leerzeichen enthält.


Wow, funktioniert perfekt.

*durchschnauf'* ...dachte schon ich müsste mir Gedanken machen ebenfalls eine eigene Funktion zu erstellen....(ob ich das hingekriegt hätte :rolleyes: )

Danke Euch beiden.

so long
Toby
 
Zuletzt bearbeitet:
ich habe mir jetzt mal diese Funktion angesehen und man kann meine Funktion mit dieser nicht ganz vergleichen, so ersetzt meine Funktion den Text-Link mit einen richtigen Link und der Link wird auch spezifisch nach Zeichen abgegrenzt :cool_alt:

somit ist die Funktion wesentlich aufwendiger und genauer aber auch langsamer, dennoch erscheint die Funktion preg_replace wider erwarten recht flott :)
 
Zurück
Oben