---
title: "reg-exp funktion som behöver snyggas till"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/162063-reg-exp-funktion-som-behöver-snyggas-till"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "vic"
published: "2007-06-29T13:03:45.000Z"
updated: "2007-06-29T13:03:45.000Z"
replies: 0
views: 218
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/162063-reg-exp-funktion-som-behöver-snyggas-till"
---

# reg-exp funktion som behöver snyggas till

## #1 — vic, 2007-06-29T13:03Z

Hejsan!

Jag behärskar helt enkelt inte reguljära uttryck och skulle därför bli väldigt glad om någon kunde snygga till nedanstånde funktion. Funktionen tar ut länkar ur en sträng och och visar max 30 tecken i länken alltså typ 

```
?id=1212332&lang=svenska&hash=233423545342452345

blir bara 

<a href="?id=1212332&lang=svenska&hash=233423545342452345">?id=1212332&lang=sven...</a>
```

Så här ser funktionen ut i dagsläget

```php
function gethtml($text)
		{
		
			$pattern = '/www\.[\w\.\\:\\?\\~\\=\\&amp;\-_\/]+/i';
			$pattern2 = '/http:\/\/[\w\.\\:\\?\\~\\=\\&amp;\-_\/]+/i';
			preg_match_all($pattern, $text, $matches, PREG_PATTERN_ORDER);
			preg_match_all($pattern2, $text, $matches_sec, PREG_PATTERN_ORDER);
			
			
			
			foreach($matches_sec[0] as $p) {
			
			$n = str_replace('http://','',$p);

			if(strlen($n) > 30) {$end = substr($n,0,30).'...';}
			else {$end = $n;}
						
			if($memory[$n] != 1)
				{
				$memory[$n] = 1;
				$text = str_replace($p,"<a href=\"$p\" onclick=\"return OrdWin(this.href, '".rand(1,1000)."')\">$end</a>",$text);
				}
				
			}
			
			foreach($matches[0] as $p) {

			if(strlen($p) > 30) {$end = substr($p,0,30).'...';}
			else {$end = $p;}
			
			if($memory[$p] != 1)
				{
				$memory[$p] = 1;
				$text = str_replace($p,"<a href=\"http://$p\" onclick=\"return OrdWin(this.href, '".rand(1,1000)."')\">$end</a>",$text);
				}
				
			}
		
		
		$text = preg_replace("/([\w\.\-_]+)(@)([\w\.\-_]+)/i", "<a href=\"mailto:$0\"><u>$0</u></a>",$text);
		return nl2br($text);
		}
```

All hjälp uppskattas!

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

---

Tråden på webben: https://www.webforum.nu/amne/php/162063-reg-exp-funktion-som-behöver-snyggas-till
