Php 如何验证网站URL';通过使用Regexp

Php 如何验证网站URL';通过使用Regexp,php,regex,Php,Regex,如何使用正则表达式验证网站url Url是这样的: http://tonton.google.fr 1. [0-4] `http` 2. [7-14] `tonton.` 3. [14-21] `google.` 4. [21-23] `fr` http://www.google.co.uk 1. [46-50] `http` 2. [53-57] `www.` 3. [57-64] `google.` 4. [64-69] `co.uk` https://paulra

如何使用正则表达式验证网站url

Url是这样的:

http://tonton.google.fr
1.  [0-4]   `http`
2.  [7-14]  `tonton.`
3.  [14-21] `google.`
4.  [21-23] `fr`

http://www.google.co.uk
1.  [46-50] `http`
2.  [53-57] `www.`
3.  [57-64] `google.`
4.  [64-69] `co.uk`

https://paulrad.com
1.  [70-75] `https`
3.  [78-86] `paulrad.`
4.  [86-89] `com`
谷歌网站

www.google.com

这里是我们只想支持上面的链接。 如果我们输入垃圾数据,如www://abc这样的abcdefg是不允许的

我在Drupal中尝试过这样的方法:

以下是drupal自定义代码:

$form['web_url'] = array(
        '#title' => 'Web URL :',
        '#type' => 'textfield',
        '#size' => 100,
        '#default_value' => @$sourcepath,
        '#required' => TRUE,
        '#maxlength' => 100,
        '#attributes' => array('class' => array('myclass_edit')),
  );

function edit_files_form_validation($form, &$form_state){
  $website_url = $form_state['values']['web_url'];
  drupal_set_message("hi");
  drupal_set_message($website_url);
  if(!preg_match("/^(http[s]?)\:\/\/([aZ09-_]*?\.)?([aZ09-_]{2,}\.)([\w\.]{2,5})$" ,$website_url )){

     form_set_error('web_url',t('Please use only an valid URL links')); 

  }

}
但这不是我的要求

^(?:(?:http|https):\/\/)?(?:[\w-]+\.)+[\w]+(?:\/[\w- .\/?]*)?$
你可以试试这个

$re = "/^(?:(?:http|https):\\/\\/)?(?:[\\w-]+\\.)+[\\w]+(?:\\/[\\w- .\\/?]*)?$/m";
$str = "http://google.com\nhttps://google.com";

preg_match_all($re, $str, $matches);
你可以使用这个正则表达式


/^(http | https)?:/[a-zA-Z0-9-.]+[a-z]{2,4}/

您可以尝试这个正则表达式

/^((ht|f)tp(s?)\:\/\/|~/|/)?([w]{2}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?/

http://www.google.com , 
https://www.google.com,
ftp://www.google.com,
www.google.com
功能->

function valid_url($value)
    {
        $pattern = "/^((ht|f)tp(s?)\:\/\/|~/|/)?([w]{2}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?/";
        if (!preg_match($pattern, $value))
        {
            return FALSE;
        }
        return TRUE;
    }
以下是我的解决方案:

^(http[s]?)\:\/\/([aZ09-_]*?\.)?([aZ09-_]{2,}\.)([\w\.]{2,5})$
获取协议、子域(如果存在)、域(必需)和ext(必需)

规则:

http://tonton.google.fr
1.  [0-4]   `http`
2.  [7-14]  `tonton.`
3.  [14-21] `google.`
4.  [21-23] `fr`

http://www.google.co.uk
1.  [46-50] `http`
2.  [53-57] `www.`
3.  [57-64] `google.`
4.  [64-69] `co.uk`

https://paulrad.com
1.  [70-75] `https`
3.  [78-86] `paulrad.`
4.  [86-89] `com`
  • 需要http或https

  • 域必须包含少于2个字符

  • Ext必须包含少于2个字符,且限制为5个字符

示例:

http://tonton.google.fr
1.  [0-4]   `http`
2.  [7-14]  `tonton.`
3.  [14-21] `google.`
4.  [21-23] `fr`

http://www.google.co.uk
1.  [46-50] `http`
2.  [53-57] `www.`
3.  [57-64] `google.`
4.  [64-69] `co.uk`

https://paulrad.com
1.  [70-75] `https`
3.  [78-86] `paulrad.`
4.  [86-89] `com`
演示:

无法理解您想要完成的内容。这两个url都是有效的…像这样的问题和答案已经太多了@Saren Arterius提到的用户是正确的,这个问题已经有了一个关于如何生成这个正则表达式的答案。@user您需要为此编写函数,例如
function valid\u url($value){$pattern=“/^((ht | f)tp(s?):\/\/\\/\\\~/\\/)?([w]{2}([\w\-]+\++++++([\w]{2,5}))(:[\d]{1,5})/”;如果(!preg_match($pattern,$value)){return FALSE;}return TRUE;}
我们如何在drupal定制中编写它functions@user在php中,我们编写的codeigniter回调函数对于php函数来说是正确的。我这样使用,但如果(!preg_match(“/^(?)(::http | https):/)(?:[\w-]+\)+[\w]+(?:/[\w-./?]*)?$”,$web_url)){form_set_error('web_url',t('请仅使用有效的url链接');}}我已编辑了您的答案。。这是我的drupal自定义代码