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!

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