webForumDet fria alternativet

Buggproblem i funktion - ereg

2 svar · 203 visningar · startad av Viking

VikingMedlem sedan maj 20003 652 inlägg
#1

Hej!

Har gjort en liten funktion som ersätter alla (i PHP inbyggda) funktionsnamn i en sträng till länkar till PHP.net och manualsidan för just den funktionen. Har dock upptäckten liten bugg, om man till exempel skriver "get_defined_functions" så blir define en länk eftersom det också är en funktion och som antagligen är före get_defined_functions i vektoren ...

Här är koden:

function function2link( $str ) {
	// "Laddar in" alla inbyggda funktioner
	$arrayFunctions = get_defined_functions();

	// Kollar igenom vektorn med funktionerna
	foreach( $arrayFunctions['internal'] as $function ) {

		// Påträffas funktionen i texten ersätts den med en länk till PHP.net och funktionen
		if( ereg( "(.*)$function(.*)", $str )) {
			$str = str_replace( $function, "<a href=\"http://se.php.net/$function\" target=\"_blank\">$function</a>", $str );
		}
	}
	return $str;
}

echo function2link( $string );

Någon som har en idé hur man skulle kunna göra? Man kan ju göra som så att man använder denna ereg istället för den aktuella:

ereg( "(.*) $function (.*)", $function );

Detta gör dock så att man istället inte kan skriva text funktion() eller så, utan måste ha mellanrum före och efter funktionsnamnet, vilket kanske inte är så lyckat. Uppskattar hjälp :)

VikingMedlem sedan maj 20003 652 inlägg
#2

Ingen?

nicclasMedlem sedan feb. 20001 050 inlägg
#3

Prova denna: http://www.nic-sys.se/php/syntaxlinking.php
Det är inte så snabbt och inte så snyggt skrivet, men det funkar i alla fall "på sig själv" :)

Hör av dig om det inte fungerar på den kod du provar.

[Finns i txt-format på http://www.nic-sys.se/php/ om du hellre kopierar det så.]

/nicclas - https://www.frisim.com

256 ms totalt · 3 externa anrop · v20260731065814-full.30151723
132 ms — hämta forumlista (db)
122 ms — hämta statistik (db)
130 ms — hämta tråd, inlägg och bilagor (db)