On Wednesday, July 3, 2002, 1:47:05 PM, "Adrian Murphy" wrote: > whats wrong with this. > it's getting stuck somewhere
"Somewhere" isn't very helpful. When asking for help be sure to include as much information as possilble. Laying out your code so the structure can be seen... <?php function urls_clickable($string) { for($n=0; $n < strlen($string); $n++) { if(strtolower($string[$n]) == 'h') { if(!strcmp("http://", strtolower($string[$n]) . strtolower($string[$n+1]) . strtolower($string[$n+2]) . strtolower($string[$n+3]) . $string[$n+4] . $string[$n+5] . $string[$n+6])) { $startpos = $n; while($n < strlen($string) && eregi("[a-z0-9\.\:\?\/\~\-\_\&\=\%\+\'\"]", $string[$n])) $n++; if(!eregi("[a-z0-9]", $string[$n-1])) $n--; $link = substr($string, $startpos, ($n-$startpos)); $link = $link; $string_tmp = $string; $string = substr($string_tmp, 0, $startpos); $string .= "<a href=\"$link\" target=\"_blank\">$link</a>"; $string .= substr($string_tmp, $n, strlen($string_tmp)); $n = $n + 15; } } } return $string; } $text = "http://www.somewhere.org <br><br>"; echo urls_clickable($text); ?> It's getting stuck because you're moving the goalposts. It's a very bad idea to base a loop on a variable that is changed within the loop. I suggest you loop through one string while building a second string as the return value. On the other hand, I seem to remember seeing a regex posted on this list recently that did exactly this. I suggest you search the archives for it because it would save you a lot of hassle. -- Stuart -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php