Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

PHP | Link aus String generieren und kürzen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
kaisen
PostRank 6
PostRank 6
Beiträge: 462
Registriert: 29.11.2005, 10:16

Beitrag von kaisen » 31.07.2009, 17:35

ich wende mich mal an das Forum, da ich selbst nicht auf die Lösung komme.
Gebraucht wird ein Codeschnippsel, der folgendes realisiert:

Es gibt einen String der neben zahlreichem text folgendes enthalten kann:

Code: Alles auswählen

http://www.domain.tld/unterverzeichnis/index.html
www.domain.tld/unterverzeichnis/index.html
www.domain.tld/unterverzeichnis/?Parameter=xy&Parameter2=xy
http://www.domain.tld/unterverzeichnis/?Parameter=xy&Parameter2=xy
Nun muss irgendwie mit regulären Ausdrücken der Link in einen klickbaren Link geändert werden, also in sowas:

Code: Alles auswählen

... <a href="URL">Link</a> ...
Wobei der Linkname nur noch aus www.domain.tld bestehen soll und etwaige Unterverteichnisse oder Parameter nur noch im HREF-Teil des Links enthalten sein sollen.

Hat jemand einen Tipp für mich, bzw. einen Link wo für dieses ein Codesnippet zu finden ist?!

Besten Dank!!!

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 31.07.2009, 19:51

Dieser Code &#8230;

Code: Alles auswählen

<?php
header&#40;"Content-Type&#58; text/plain"&#41;;

$text = 'http&#58;//www.domain.tld/unterverzeichnis/index.html
www.domain.tld/unterverzeichnis/index.html
www.domain.tld/unterverzeichnis/?Parameter=xy&Parameter2=xy
http&#58;//www.domain.tld/unterverzeichnis/?Parameter=xy&Parameter2=xy';

preg_match_all&#40;'|&#40;?&#58;http&#58;//&#41;?&#40;&#40;www\.&#91;a-z0-9.-&#93;+\.&#91;a-z&#93;+&#41;&#91;/a-z0-9?_.,;&=-&#93;+&#41;|i', $text, $m, PREG_SET_ORDER&#41;;

var_dump&#40;$m&#41;;

?>
ergibt &#8230;

Code: Alles auswählen

array&#40;4&#41; &#123;
  &#91;0&#93;=>
  array&#40;3&#41; &#123;
    &#91;0&#93;=> "http&#58;//www.domain.tld/unterverzeichnis/index.html"
    &#91;1&#93;=> "www.domain.tld/unterverzeichnis/index.html"
    &#91;2&#93;=> "www.domain.tld"
  &#125;
  &#91;1&#93;=>
  array&#40;3&#41; &#123;
    &#91;0&#93;=> "www.domain.tld/unterverzeichnis/index.html"
    &#91;1&#93;=> "www.domain.tld/unterverzeichnis/index.html"
    &#91;2&#93;=> "www.domain.tld"
  &#125;
  &#91;2&#93;=>
  array&#40;3&#41; &#123;
    &#91;0&#93;=> "www.domain.tld/unterverzeichnis/?Parameter=xy&Parameter2=xy"
    &#91;1&#93;=> "www.domain.tld/unterverzeichnis/?Parameter=xy&Parameter2=xy"
    &#91;2&#93;=> "www.domain.tld"
  &#125;
  &#91;3&#93;=>
  array&#40;3&#41; &#123;
    &#91;0&#93;=> "http&#58;//www.domain.tld/unterverzeichnis/?Parameter=xy&Parameter2=xy"
    &#91;1&#93;=> "www.domain.tld/unterverzeichnis/?Parameter=xy&Parameter2=xy"
    &#91;2&#93;=> "www.domain.tld"
  &#125;
&#125;
Das müsstest du entsprechend mit preg_replace_callback() und eingebettetem htmlspecialchars() umsetzen. Benutzt du nur preg_replace(), bekommst du falschen Code, sobald ein & im Text auftaucht, und eine Sicherheitslücke, falls du < und > zulässt (dann kann man dir HTML-Code mitsamt Javascript & Co. unterjubeln).
Erfasst keine Domains, die ohne www. beginnen, und ist möglicherweise auch auf anderen Augen blind, aber als Einstieg sollte es reichen. Bessere Muster zur URL-Erkennung sollten im Netz zu finden sein, wichtig ist nur die Klammersetzung, um die richtigen Daten rauszufischen. (n.b.: Das ?: bei (?:http://) bedeutet, dass der Inhalt dieser runden Klammer nicht kopiert wird - das http:// brauchen wir ja nicht.)

kaisen
PostRank 6
PostRank 6
Beiträge: 462
Registriert: 29.11.2005, 10:16

Beitrag von kaisen » 02.08.2009, 18:48

Danke schon einmal für deine Hilfe.
Dein Code findet ja nun die Links, aber wie kriege ich jetzt die Funktionalität, dass in dem Original-String die URLs durch klickbare Links (mit <a href="originalURL">www.domainname.tld</a>) ersetzt werden?

Edit: So selbst ist der Mann! Hatte mit callbacks und create_function nur noch nicht gearbeitet. Hier der Code für alle die es evtl. gebrauchen können...

Code: Alles auswählen

$text_neu = preg_replace_callback&#40;
    '|&#40;?&#58;http&#58;//&#41;?&#40;&#40;www\.&#91;a-z0-9.-&#93;+\.&#91;a-z&#93;+&#41;&#91;/a-z0-9?_.,;&=-&#93;+&#41;|i',
    create_function&#40;
      '$treffer',
	  'return "<a href=\"http&#58;//".$treffer&#91;1&#93;."\">".$treffer&#91;2&#93;."</a>";'
    &#41;,
    htmlspecialchars&#40;$text&#41;
  &#41;;  
	  
echo $text_neu; 

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag