webForumDet fria alternativet

reg-exp funktion som behöver snyggas till

PHP

0 svar · 212 visningar · startad av vic

Medlem sedan apr. 2006244 inlägg
Frågan#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!

250 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)