note 12705 deleted from ref.strings by maxim
| From: | maxim@php.net | Date: | Tue, 12 Nov 2002 16:19:53 +0000 |
| Subject: | note 12705 deleted from ref.strings by maxim | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-39397@lists.php.net to get a copy of this message | ||
urls_clickable seems to miss the last character from any hyperlink which ends with a /. This can be
a problem for a link to certain web servers which need a terminating slash to indicate that the last
section refers to a directory.
e.g. http://www.mysite.com/subdir/
Here's the altered function:
// Makes all words starting with http:// clickable
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+1));
$link = $link;
$string_tmp = $string;
$string = substr($string_tmp, 0, $startpos);
$string .= "<a href=\"$link\">$link</a>";
$string .= substr($string_tmp, $n+1, strlen($string_tmp));
$n = $n + 15;
}
}
}
return $string;
}
// lines with a additional +1 are:
// the $link = substr(...
// and
// the $string .= substr(...
// lines