Re: Re: Filtering URLs problem..
| From: | Jochem Maas | Date: | Fri, 23 Dec 2005 13:45:40 +0000 |
| Subject: | Re: Re: Filtering URLs problem.. | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-227849@lists.php.net to get a copy of this message | ||
Al wrote:
I didn't fully test this; but it should get you started.fully? more like not at all. point 1: "%<a\040href\040*=['"]$types://((www.)*[\w/\.]+)['"]>.+</a>%i";
^-- double quotes are not escaped == parse errorpoint 2: "%<a\040href\040*=['"]$types://((www.)*[\w/\.]+)['"]>.+</a>%i";
^-- this will inject the string 'Array' into the regexp stringpoint 3: the regexp does not take into account that HTML tag attributes can occur in any order e.g:
<a class="mine" id="abc123" target="_top" href="www.bla.com" >testing </a> point 4: what happens when the url does not have a protocol specified? granted the OP did not actually specify if strings like: "www.google.com" should also be considered as a url, so this is not really a valid point.
$types= array('http', 'ftp', 'https', 'mms', 'irc'); $pattern= "%<a\040href\040*=['"]$types://((www.)*[\w/\.]+)['"]>.+</a>%i"; // the "i" makes it non case sensitive if(preg_match($pattern, $URL_str, $match)){$URL= match[1];} else{User did not enter a complete link; do the simple thing} Anders Norrbring wrote:I'm writing a filter/parsing function for texts entered by users, and I've run into a problem... What I'm trying to do is to parse URLs of different sorts, ftp, http, mms, irc etc and format them as links, that part was real easy.. The hard part is when a user has already entered a complete link.. In short: http://www.server.tld/page.html should be converted to: <a href='http://www.server.tld/page.html'>http://www.server.tld/page.html</a> That part works fine, but if the user enters: <a href='http://www.server.tld/page.html'>click here</a> it all becomes a mess... Can somebody please make a suggestion on this?