Alle http* in einem String in URLs wandeln
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anhieb
anzeigen
automatisch aktualisierte signaturen
code
ersetzung
frage
gedanke
http
kriterium
laufendem betrieb
perfekt code
profil
rasche antwort
signatur
string
tag
url
vorarbeit
wandeln
zeichenkette
-
Huhu,
wenn ich einen (PHP)tag/string">String habe, Beispiel..
$zeichenkette='hallo, besucht mich unter http://lalabla.eu und http://www.knaster.me';
.. oder ähnlich, wie kann ich alle Text-URLs (welche mit http oder https beginnen) am kürzesten bzw. effektivsten automatisch in URLs wandeln?
Mit match()? Oder replace()?
Die URLs im String sollen in diesem Fall einen BB-Code verpasst bekommen:
$zeichenkette='hallo, besucht mich unter [url=http://lalabla.eu]http://lalabla.eu[/url] und [url=http://www.knaster.me]http://www.knaster.me[/url]';
Ich weiß, die Frage ist nicht sonderlich schwer, allerdings geht es mir um die kürzeste Variante.
:)
Beitrag zuletzt geändert: 26.4.2013 18:25:24 von menschle -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi, sehr kurz aber nicht perfekt:
$zeichenkette = 'hallo, besucht mich unter http://lalabla.eu und http://www.knaster.me'; $suchmuster = '#(https?\://.+?)\s#i'; $ersetzung = '[url=${1}]${1}[/url] '; echo preg_replace($suchmuster, $ersetzung, $zeichenkette);
Das Proble, ist, nach deiner knaster.me URL ist kein Whitespace mehr welches ich als Kriterium für das Ende einer URL verwendet habe.
Beitrag zuletzt geändert: 26.4.2013 16:44:30 von kochmarkus -
Ein Whitespace wäre nicht das Problem.
:)
PS: Übrigens ein dickes THX für die rasche Antwort.
Beitrag zuletzt geändert: 26.4.2013 18:27:23 von menschle -
matcht auch den letzen Link/(http[.\S]*)/
-
tobiworlds schrieb:
Und wo genau? An welcher Stelle müsste bei..
matcht auch den letzen Link/(http[.\S]*)/
kochmarkus schrieb:
.. ergänzt werden?
$zeichenkette = 'hallo, besucht mich unter http://lalabla.eu und http://www.knaster.me'; $suchmuster = '#(https?\://.+?)\s#i'; $ersetzung = '[url=${1}]${1}[/url] '; echo preg_replace($suchmuster, $ersetzung, $zeichenkette);
-
Das ist ein verbessertes Pattern/Suchmuster.
$zeichenkette = 'hallo, besucht mich unter http://lalabla.eu und http://www.knaster.me'; $suchmuster = '/(http[.\S]*)/'; $ersetzung = '[url=${1}]${1}[/url]'; echo preg_replace($suchmuster, $ersetzung, $zeichenkette);
So funktioniert es...
Beitrag zuletzt geändert: 26.4.2013 19:07:04 von tobiworlds -
Ersteinmal ein dickes Dankeschön euch. :)
Nun hatte ich beide Varianten Hardcore-Technisch (im laufendem Betrieb, und abhängig von allen anderen Scripts) durchgespielt, und beides funktionierte auch auf Anhieb.
Entschieden habe ich mich nun für folgende (kurze) Variante:
$zeichenkette=preg_replace('/(http[.\S]*)/','[url=${1}]${1}[/url]',$zeichenkette);
Hintergründe
Worum gehts genau? Kurz gesagt:
In diesem Fall um meine Signatur hier bei Lima-City - aber nicht nur.
Da esin anderen Forenauf anderen Boards leichter ist, automatisch aktualisierte Signaturen (zB in Bildern) anzeigen zu lassen, konnte ich meine bisherigen Scripte hier bislang nicht einsetzen.
Nun twittere ich allerdings - mal mehr, mal weniger - sehr gerne, und so reizte es mich, meinen letzten Tweet in meiner Signatur anzeigen zu lassen.
Dank tchab, welcher aufgrund eigener Ideen und Ziele (und einen ganzen Tag Vorarbeit) mich auf neue Gedanken brachte - und auch kochmarkus und tobiworlds, die prompt weiterhalfen - bin ich nun ein ganzen Schritt weiter.
Danke euch.
:) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage