phpbar.de logo

Mailinglisten-Archive

[php] Alle noch nicht anklickbaren Links anklickbar machen

[php] Alle noch nicht anklickbaren Links anklickbar machen

Robert Hartung r.hartung at roberthartung.de
Fr Apr 16 11:31:11 CEST 2010


Kurze Frage: Warum löschst du nicht einfach alles Links im Format <a
..>...</a> und suchst dann alle neu raus?^^

Grüße
Robert

-----Ursprüngliche Nachricht-----
Von: php-bounces at phpbar.de [mailto:php-bounces at phpbar.de] Im Auftrag von
Ralf Eggert
Gesendet: Freitag, 16. April 2010 11:26
An: deutschsprachige PHP-Mailingliste
Betreff: Re: [php] Alle noch nicht anklickbaren Links anklickbar machen

Hallo Yannik,

danke für deine Mühe. Habe mittlerweile den Holzhammer raus geholt und
das Ganze anders aufgezogen:

------------------------------------------------------------------------
preg_match_all(
  '=(http:|https:)//[^ )\r\n!<"\']++=i', $htmlBody, $linkList
);

$linkList = array_unique($linkList[0]);

if (count($linkList) > 0)
{
  foreach ($linkList as $key => $link)
  {
    if (preg_match_all(
      '^<a(.*)' . $link . '(.*)>(.*)</a>^iU', $htmlBody, $linkListSingle
    ))
    {
      continue;
    }

    $htmlBody = str_replace(
      $link, '<a href="' . $link . '">' . $link . '</a>', $htmlBody
    );
  }
}
------------------------------------------------------------------------

D.h. zuerst werden alle Links gefunden, die mit http oder https
beginnen. Danach wird dann für jeden einzelnen Link geprüft, ob er sich
innerhalb eines <a> Tags befinden. Wenn nein, wird er ersetzt. Ansonsten
eben nicht.

Performancemäßig ist das sicherlich auch suboptimal, aber es
funktioniert. Sogar bei sowas Ekelhaftem wie ein OnClick, um ein Popup
zu öffnen...

Danke und Gruss,

Ralf
-- 
** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de **
Informationen: http://www.phpbar.de
http://lists.phpbar.de/mailman/listinfo/php


php::bar PHP Wiki   -   Listenarchive