---
title: "Sökes: Den ultimata hyperlänkarfunktionen!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/64842-sökes-den-ultimata-hyperlänkarfunktionen"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Mungo"
published: "2003-01-14T13:14:53.000Z"
updated: "2003-01-15T21:49:13.000Z"
replies: 5
views: 344
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/64842-sökes-den-ultimata-hyperlänkarfunktionen"
---

# Sökes: Den ultimata hyperlänkarfunktionen!

## #1 — Mungo, 2003-01-14T13:14Z

Man blir ju galen... Så länge jag har hållit på med PHP har jag sökt med ljus och lykta efter den ultimata "hitta länkar i text"-funktionen. Jag har hittat en som funkar helt OK, nämligen:

```php
function strLinks($text) {
    $text = preg_replace("/((http(s?):\/\/)|(www\.))([\w\.:!?~=&\-_\/]+)/i","<a href=\"http$3://$4$5\" target=\"_blank\"><u>$2$4$5</u></a>",$text); 
    $text = preg_replace("/([w.-_]+)(@)([w.-_]+)/i", "<a href=\"mailto:$0\"><u>$0</u></a>",$text);
    return $text;
	}
```

Men den har två irriterande buggar:

1\. Om texten som genomsöks \_börjar\_ med en URL funkar det inte.
2\. Om texten redan innehåller hyperlänkar I HTML-format blir det galet. 

Man skulle alltså vilja justera ovanstående funktion så att den dels kan hitta länkar oavsett var i strängen de befinner sig, samt att den ska ignorera sånt som står inom \<a\>-länkar och det som står mellan \<a href=... och \</a\>. 

Är det nån som har lust och ork att hjälpa till här? Jag tror inte att jag är den ende som har behov av den här funktionen, och om vi kan få fram en som funkar 100% kan vi ju lägga in den i wF-kod sen så har vi den för alla framtida behov! :)

//Måns

Permalänk: https://www.webforum.nu/p/64842

## #2 — Mungo, 2003-01-15T09:40Z

Jaha, efter att ha fått hjälp i ett annat forum tror jag mig besitta den Ultimata Stränlänkarfunktionen &trade; !

Här är den:

```php
function strLinks($text) {
	$text = preg_replace('%(<a\s[^>]+>[url]http://[/url][^\s]+</a>)|(<[^>]+[url]http://[/url][^>]+>)|([url]http://[/url])[^\s^)]+%ie',
                  '"$0"=="$1" || "$0"=="$2" ? "$0" : "<a target=\"_blank\" href=\"$0\">$0</a>"', $text);
	$text = preg_replace("/([w.-_]+)(@)([w.-_]+)(\.)(\w+)/i", "<a href=\"mailto:$0\">$0</a>",$text);
	$text = preg_replace('%(<a\s[^>]+>[url]http://[/url]|[url]www.[/url][^\s]+</a>)|(<[^>]+[url]www.[/url][^>]+>)|([url]www.[/url])[^\s^)]+%ie',
                  '"$0"=="$1" || "$0"=="$2" ? "$0" : "<a target=\"_blank\" href=\"http://$0\">$0</a>"', $text);	
	return $text;
	}
```

Denna tar in en sträng, hittar allt som börjar med "http://" eller "www." eller är en giltig e-postadress och länkar upp det. Men den struntar i det som ligger inom HTML-taggar eller inom \<a\>\</a\>.

Permalänk: https://www.webforum.nu/p/912893

## #3 — greymane, 2003-01-15T19:01Z

om länken börjar med "https://" då?  :q

Permalänk: https://www.webforum.nu/p/916386

## #4 — Mungo, 2003-01-15T19:15Z

Det har du rätt i, men det har jag aldrig haft behov av. Borde dock bara vara att lägga till \|<https://> på rätt ställen i regexpet.

Permalänk: https://www.webforum.nu/p/916393

## #5 — prey, 2003-01-15T19:55Z

kolla efter 

```php
urlencode()
```

.. fast jag kanske är helt ute och cyklar.

Permalänk: https://www.webforum.nu/p/916440

## #6 — Mungo, 2003-01-15T21:49Z

Jo, det är du nog. :)

Den här funktionen skapar HTML-hyperlänkar från en vanlig textsträng.

Permalänk: https://www.webforum.nu/p/916534

---

Tråden på webben: https://www.webforum.nu/amne/php/64842-sökes-den-ultimata-hyperlänkarfunktionen
