【问题标题】:Simple PHP Regex question简单的 PHP 正则表达式问题
【发布时间】:2011-02-09 09:18:01
【问题描述】:

我想验证表单中的字段,以确保它包含链接到 Vimeo 视频的 URL 的正确格式。以下是我在 Javascript 中的内容,但我需要将其转换为 PHP(不是我的强项)

基本上,我需要检查该字段,如果格式不正确,我需要将错误消息存储为变量。如果正确,我将变量存储为空。

                // Parse the URL
            var PreviewID = jQuery("#customfields-tf-1-tf").val().match(/http:\/\/(www.vimeo|vimeo)\.com(\/|\/clip:)(\d+)(.*?)/);
            if ( !PreviewID ) {
                jQuery("#cleaner").html('<div id="vvqvideopreview"><?php echo $this->js_escape( __("Unable to parse preview URL. Please make sure it's the <strong>full</strong> URL and a valid one at that.", 'vipers-video-quicktags') ); ?></div>');
                return;
            }

传统的 vimeo url 是这样的:http://www.vimeo.com/10793773

谢谢!

【问题讨论】:

    标签: php regex vimeo


    【解决方案1】:
    if (0 === preg_match('/^http:\/\/(www\.)?vimeo\.com\/(clip\:)?(\d+).*$/', $value))
    {
        $error = 'Unable to parse preview URL';
    }
    

    更新,回复您的评论:

    if (0 === preg_match('/^http:\/\/(www\.)?vimeo\.com\/(clip\:)?(\d+).*$/', $value, $match))
    {
        $error = 'the error';
    }
    else
    {
        $vimeoID = $match[3];
    }
    

    【讨论】:

    • 感谢您的快速回复!您能告诉我如何剥离用户输入以仅将 vimeo id 编号设置为变量吗?
    【解决方案2】:

    只需使用preg_match 之类的方式解析您的 $_REQUEST。

    $vimeo_array = array();
    $vimeo_link = $_REQUEST("form_input_name");
    if(preg_match(/http:\/\/(www.vimeo|vimeo)\.com(\/|\/clip:)(\d+)(.*?)/, $vimeo_array, $arr))
    {
      $vimeo_code = $vimeo_array[3];
    } else {
      $error = "Not a valid link";
    }
    

    【讨论】:

    • 感谢您的快速回复!您能告诉我如何剥离用户输入以仅将 vimeo id 编号设置为变量吗?
    • 您可以使用salathe的回答中修改后的正则表达式 ('~^http://(?:www\.)?vimeo\.com/(?:clip:)?(\d+)~ '),那么id会保存在$vimeo_array[1]中。
    【解决方案3】:

    试试这个 https / http url

    if (preg_match('/^(http|https):\/\/(www\.)?vimeo\.com\/(clip\:)?(\d+).*$/', $vimeo_url, $vimeo_id)){
        $vimeoid = $vimeo_id[4];
    }else{
       // error message... 
    }
    

    【讨论】:

      【解决方案4】:

      要获取 Vimeo ID 号,您可以执行以下操作:

      $link = 'http://vimeo.com/10638288';
      if (preg_match('~^http://(?:www\.)?vimeo\.com/(?:clip:)?(\d+)~', $link, $match)) {
          $vimeo_id = $match[1];
      } else {
          // Show user an error, perhaps
      }
      

      我还稍微修改了正则表达式,以节省过多的反斜杠转义字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 2011-05-13
        • 2011-04-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多