reg-exp funktion som behöver snyggas till

PHP

0 svar · 218 visningar · startad av vic

Medlem sedan apr. 2006244 inlägg
Trådstart#1

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

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!

266 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)