Re: Re: Php filter validate url
| From: | Plamen Ivanov | Date: | Mon, 27 Jun 2011 16:10:19 +0000 |
| Subject: | Re: Re: Php filter validate url | ||
| References: | 1 2 3 4 5 6 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-313760@lists.php.net to get a copy of this message | ||
On Mon, Jun 27, 2011 at 11:34 AM, Jim Lucas <lists@cmsws.com> wrote:
> On 6/27/2011 8:25 AM, Plamen Ivanov wrote:
>> On Mon, Jun 27, 2011 at 11:14 AM, Shawn McKenzie <nospam@mckenzies.net> wrote:
>>> On 06/27/2011 10:01 AM, Plamen Ivanov wrote:
>>>> On Sun, Jun 26, 2011 at 5:44 PM, Shawn McKenzie <nospam@mckenzies.net> wrote:
>>>>>
>>>>> On 06/26/2011 12:31 PM, Adam Tong wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I wanted tu use php filters for validation to avoid regular expresions.
>>>>>> Is it possible that FILTER_VALIDATE_URL only checks if the string has
>>>>>> http:// and do not check for the format
>>>>>> domain.something?
>>>>>> ----
>>>>>> $url = 'http://wwwtestcom';
>>>>>> $url = filter_var($url,FILTER_VALIDATE_URL);
>>>>>> echo $url;
>>>>>> -----
>>>>>>
>>>>>> Or I am doing something wrong
>>>>>>
>>>>>> Thank you
>>>>>
>>>>> Unless I'm totally misunderstanding what you want (validate that a
>>>>> string starts with http://) try:
>>>>>
>>>>> if(strpos($url, 'http://') === 0) {
>>>>> //starts with http://
>>>>> } esle {
>>>>> // does not start with http://
>>>>> }
>>>>>
>>>>> --
>>>>> Thanks!
>>>>> -Shawn
>>>>> http://www.spidean.com
>>>>>
>>>>> --
>>>>> PHP General Mailing List (http://www.php.net/)
>>>>> To unsubscribe, visit:
>>>>> http://www.php.net/unsub.php
>>>>>
>>>>
>>>> Another possible solution could be:
>>>>
>>>> $ary = explode('://', $url);
>>>> if (1 >= count($ary)) {
>>>> echo 'No schema specified!';
>>>> } else {
>>>> // Schema specified.
>>>> // $ary[0] is the protocol
>>>> $allowed = array('http', 'https');
>>>> if (FALSE == in_array($ary[0], $allowed) {
>>>> // Protocol not valid!
>>>> exit(1); // or return FALSE; whatever...
>>>> }
>>>> // $ary[1] is the uri, validate with filter_var().
>>>> }
>>>>
>>>> Hope this helps.
>>>
>>> May make more sense to use parse_url() than explode.
>>>
>>> --
>>> Thanks!
>>> -Shawn
>>> http://www.spidean.com
>>>
>>
>> http://php.net/manual/en/function.parse-url.php
>> "This function is not meant to validate the given URL..."
>>
>> I would use parse_url() after URL validation.
>>
>
> Shawn meant to use parse_url() in place of your explode statement. He didn't
> say to use parse_url() as a method to validate the url.
>
> He said it would make more sense to do the following.
>
> Also, use strict type matching if you want to compare against boolean(FALSE)
>
> $allowed = array('http', 'https');
>
> $scheme = parse_url($url, PHP_URL_SCHEME);
>
> if (FALSE === in_array($scheme, $allowed) {
> // Protocol not valid!
> exit(1); // or return FALSE; whatever...
> }
>
> Seems a little less muddy to me.
>
> Jim Lucas
>
Makes sense now.
Thanks guys.