[support] [bug in valid_url ?] url with specials chars not filtered
pyg
pyg at framasoft.net
Tue Oct 30 13:57:26 UTC 2007
Hello world,
Here's my first question (Drupal 5.3) : some of my input text fields
contains urls like :
- http://collab.sakaiproject.org/portal/site/!gateway/page/!gateway-100
or
- http://www.mediawiki.org/wiki/Manual:Configuration_settings_(alphabetical)
This url are not converted like others in url (i suppose because some
"!" and "(" are part of them).
I found that http://api.drupal.org/api/function/valid_url/5 may be
incomplete for some regular, W3C and RFCs valid chars :
-------
function valid_url($url, $absolute = FALSE) {
$allowed_characters = '[a-z0-9\/:_\-_\.\?\$,;~=#&%\+]';
if ($absolute) {
return preg_match("/^(http|https|ftp):\/\/". $allowed_characters
."+$/i", $url);
}
else {
return preg_match("/^". $allowed_characters ."+$/i", $url);
}
}
-------------
Same thing for http://api.drupal.org/api/function/_filter_url/5
I'm quite surprised of that...
Found some pseudo patches on the web (like
http://amadain.net/node?page=2 ) but I I'm curious to know what some
regular signs are not added to the regex....
Is it a bug or a feature ? If it's a bug (I think that someone else
must have already noticed that behavior) should I report it ?
By the way, I tried to complete the regex by moifying
$allowed_characters = '[a-z0-9\/:_\-_\.\?\$,;~=#&%\+]';
with
$allowed_characters = '[a-z0-9\/:_\-_\.\?\$,;~=#&%\+!\(\)]';
and same in _filter_url function, but it doesn't seems to work... :-(
Any Idea why ?
cheers
Pierre-Yves
More information about the support
mailing list