Autor |
Nachricht |
AndiN
Threadersteller
Dabei seit: 31.05.2005
Ort: -
Alter: 41
Geschlecht:
|
Verfasst So 13.04.2008 16:09
Titel Frage zu regulären Ausdrücken bzgl. gekürzter Domain-Ausgabe |
|
|
Hallo Kollegen,
ich habe eine Funktion die mir aus einem Fließtext ($content) alle eingegebenen URLs und Email-Adressen in anklickbare Links umwandelt. Das ganze sieht so aus und funktioneirt auch prima soweit:
$suchmuster = array('#((?:http://|https://|ftp://)\S+)#','#[^/]((www.)\S+)#','/([a-zA-Z0-9\._-]+)@([a-zA-Z0-9\._-]+)\.([a-zA-Z0-9\._-]+)/');
$ersetzen = array('<a href="$0" target="_blank">$0</a>','<a href="http://$1" target="_blank">$0</a>','<a href="mailto:$0">$0</a>');
return nl2br(preg_replace($suchmuster,$ersetzen,$content));
Nun möchte ich erreichen, dass wenn ein User einen langen URL eingibt, dieser in der Anzeige nur bis zur Domain-Endung angezeigt wird. Die Verlinkung sollnatürlich bleiben.
Beispiel:
Eingabe: http://www.muster.de/html/sites/4343/hfhfhf/test.php
Ausgabe: <a href="http://www.muster.de" target="_blank">http://www.muster.de/html/sites/4343/hfhfhf/test.php</a>
Das soll bei folgenden Eingaben funktionieren:
www.irgendwas.de/hjhjk/jkjk/index.html
http://irgendwas.de/hjhjk/jkjk/index.html
http://www.irgendwas.de/hjhjk/jkjk/index.html
Ideen, Vorschläge, Lösungen? ... vielleicht... bitte?
|
|
|
|
|
Smooth-Graphics
Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst So 13.04.2008 16:18
Titel Re: Frage zu regulären Ausdrücken bzgl. gekürzter Domain-Aus |
|
|
Du meinst andersrum oder? So ergibt das ja keinen Sinn
Zum Problem: Du kannst doch die Stringlänge bestimmen. Dann sagst ud einfach für die Variable $b = URL und $b1 = max. 30 Zeichen
-> <a href="$b">$b1</a>
|
|
|
|
|
Anzeige
|
|
|
AndiN
Threadersteller
Dabei seit: 31.05.2005
Ort: -
Alter: 41
Geschlecht:
|
Verfasst So 13.04.2008 17:11
Titel Re: Frage zu regulären Ausdrücken bzgl. gekürzter Domain-Aus |
|
|
Ähm, ja. natürlich andersrum.
Ich habe schon was versucht nach dem Motto:
Er soll den String in der Varible $0 mit explode in ein Array $array_url zerlegen und wenn in dem Anfangsstring der Substring "http://" vorkommt soll er im a-Tag dann Wenn in der Variable $0 "http://" vorkommt dann soll er $array_url[2] nehmen und ansonsten $array_url[0].
Das kleine Problemchen dabei ist, dass $0 keine wirkliche Varible ist. Wäre es eine Varibale müsste das ganze ja eh so aussehen:
$ersetzen = array('<a href="'.$0.'" target="_blank">'.$0.'</a>','<a href="http://'.$1.'" target="_blank">'.$0.'</a>','<a href="mailto:'.$0.'">'.$0.'</a>');
Reguläre Ausdrücke sind mir leider ein Buch mit 7 Siegeln. Ich war froh als das was ich da oben habe endlich funktionierte.
Es gibt quasi jetzt 2 Lösungsansätze:
1) Die Abfrage nachdem was ich ersetzen muss in irgendeiner Form abzuändern
2) Herausfinden wie ich den String mit der URL kriege und denn dann mit explode usw. behandeln
3) einfach pauschal die ersten x Zeichen ausgeben
Weg 3 wäre der einfachste, das will ich aber nicht weil es sehr unschön aussieht und der für den ich das programmiere legt auf Design saumässig viel Wert. Am Liebsten wäre mir Weg 1. Bloss wie?
Zuletzt bearbeitet von AndiN am So 13.04.2008 17:14, insgesamt 1-mal bearbeitet
|
|
|
|
|
Darkdragon
Dabei seit: 23.05.2006
Ort: Berlin
Alter: 41
Geschlecht:
|
Verfasst So 13.04.2008 18:54
Titel
|
|
|
Probieres mal hier mit:
Code: | <?php
$domain="http://www.muster.de/html/sites/4343/hfhfhf/test.php";
$domai=str_replace("http://","",$domain);
$domain2 = explode("/",$domai);
echo $domain2[0];
?> |
|
|
|
|
|
AndiN
Threadersteller
Dabei seit: 31.05.2005
Ort: -
Alter: 41
Geschlecht:
|
Verfasst So 13.04.2008 18:57
Titel
|
|
|
@Darkdragon:
Das Problem ist diese $domain
Woher kriege ich die? Ich durchsuche ja einen Fließtext.
|
|
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
|
|
|
|
AndiN
Threadersteller
Dabei seit: 31.05.2005
Ort: -
Alter: 41
Geschlecht:
|
Verfasst So 13.04.2008 19:56
Titel
|
|
|
tacker hat geschrieben: | http://de.php.net/parse_url ist dein Freund. |
Das ist schonmal etwas was ich sehr gut verwenden kann wenn ich die URL im Fliestext (allerdings können das ja auch mehrere sein) extrahieren konnte. Momentan extrahiere ich jedoch aber ja nichts sondern ersetze Strings die gewisse - durch reguläre Ausdrücke definierte - Merkmale aufweisen. Ich habe also letzendlich keine Variable auf die ich die Funktion parse_url loslassen könnte. Das ist ja mein Problem.
|
|
|
|
|
AndiN
Threadersteller
Dabei seit: 31.05.2005
Ort: -
Alter: 41
Geschlecht:
|
Verfasst Mo 14.04.2008 00:04
Titel
|
|
|
Ich könnte natürlich NACH der Ersetzung nach folgendem Suchen:
<a href="http://www.blabla.de/muster/muster.html" target="_blank">http://www.blabla.de/muster/muster.html</a>
Und es dann mit <a href="http://www.blabla.de/muster/muster.html" target="_blank">http://www.blabla.de</a>
Also wieder mit preg_replace() ersetzen. Aber wie ist dafür der reguläre Ausdruck?
.. baaaah.. ich werde langsam kirre.
Zuletzt bearbeitet von AndiN am Mo 14.04.2008 00:04, insgesamt 1-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
frage bzgl. if/else
Frage bzgl. Contact Code
Frage bzgl. Anti Alias
Frage bzgl. Instanzen ansprechen
Frage bzgl. Schatten über der Googlemap
Unterschiede $Ausgabe und $_POST["Ausgabe"] ???
|
|