phpbar.de logo

Mailinglisten-Archive

[php] Alle noch nicht anklickbaren Links anklickbar machen

[php] Alle noch nicht anklickbaren Links anklickbar machen

Ralf Eggert r.eggert at travello.de
Fr Apr 16 11:26:21 CEST 2010


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

php::bar PHP Wiki   -   Listenarchive