小编J.C*_*J.C的帖子

使用preg_match解析youtube视频ID

我正在尝试使用preg_match解析youtube网址的视频ID.我在这个网站上找到了一个似乎有效的正则表达式;

(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+
Run Code Online (Sandbox Code Playgroud)

如图所示:

替代文字

我的PHP如下,但它不起作用(给出未知修饰符'['错误)...

<?
 $subject = "http://www.youtube.com/watch?v=z_AbfPXTKms&NR=1";

 preg_match("(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+", $subject, $matches);

 print "<pre>";
 print_r($matches);
 print "</pre>";

?>
Run Code Online (Sandbox Code Playgroud)

干杯

php regex youtube parsing

63
推荐指数
4
解决办法
6万
查看次数

我如何CURL www.google.com - 它一直将我重定向到.co.uk

我使用CURL来检查是否存在URL(HEAD请求),但是当我测试它时www.google.com,它会将我重定向到www.google.co.uk- 可能是因为我的服务器是基于英国的.

有没有办法阻止这种情况发生?我不想删除该CURLOPT_FOLLOWLOCATION选项,因为这对301重定向等有用.

我的部分代码如下;

$ch = curl_init();

    // set URL and other appropriate options
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
    curl_setopt($ch, CURLOPT_TIMEOUT, 4);

    $output = curl_exec($ch);

    // get data     
$data = curl_getinfo($ch);
Run Code Online (Sandbox Code Playgroud)

$data['url']含有www.google.co.uk当我设置$urlwww.google.com

php dns curl libcurl

13
推荐指数
2
解决办法
6747
查看次数

如何测试"If-Modified-Since"HTTP Header支持

使用PHP如何准确测试远程网站是否支持 "If-Modified-Since"HTTP标头.

根据我的阅读,如果您自GET的远程文件自标题请求中指定的日期以来已被修改 - 它应返回200 OK状态.如果尚未修改,则应返回304 Not Modified.

因此我的问题是,如果服务器支持"If-Modified-Since"但仍然返回200 OK怎么办?

有一些工具可以检查您的网站是否支持"If-Modified-Since",所以我想我问他们是如何工作的.

编辑:

我使用Curl进行了一些测试,发送以下内容;

curl_setopt($ch, CURLOPT_HTTPHEADER, array("If-Modified-Since: ".gmdate('D, d M Y H:i:s \G\M\T',time()+60*60*60*60)));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
Run Code Online (Sandbox Code Playgroud)

即将来google.com返回的日期;

HTTP/1.0 304 Not Modified
Date: Fri, 05 Feb 2010 16:11:54 GMT
Server: gws
X-XSS-Protection: 0
X-Cache: MISS from .
Via: 1.0 .:80 (squid)
Connection: …
Run Code Online (Sandbox Code Playgroud)

php curl http http-headers

11
推荐指数
2
解决办法
2万
查看次数

Jquery UI Slider焦点问题

我有一个jQuery UI Slider的问题.该问题也出现在演示中.

在Chrome中更明显 - 如果你去http://jqueryui.com/demos/slider/#steps

并滑动滑块,你不会看到任何错误.如果您然后单击"新窗口"或转到(http://jqueryui.com/demos/slider/steps.html)在新窗口中查看演示并尝试滑动滑块,您将看到在拖动过程中,滑块会在其周围获得一个焦点框.

我有这个问题,我似乎无法解决它.

谁能指出我正确的方向?

javascript jquery jquery-ui jquery-plugins

4
推荐指数
1
解决办法
2742
查看次数

重叠日期范围MySQL

我有以下数据;

ID  startDate               endDate
-----------------------------------------------
1   2010-03-01 10:00:00     2010-03-01 12:00:00
2   2010-03-01 12:30:00     2010-03-01 15:30:00
3   2010-03-01 15:30:00     2010-03-01 18:30:00
Run Code Online (Sandbox Code Playgroud)

我想要做的是检查开始和结束日期是否属于我的数据中的startDate和endDate范围.

所以例如,以下就可以了;

startDate               endDate
-----------------------------------------------
2010-03-01 12:00:00     2010-03-01 12:30:00
2010-03-01 18:30:00     2010-03-01 21:00:00
Run Code Online (Sandbox Code Playgroud)

但是下列日期会失败,因为它们会重叠;

startDate               endDate
-----------------------------------------------
2010-03-01 09:00:00     2010-03-01 13:00:00 (overlaps ID 1)
2010-03-01 10:30:00     2010-03-01 11:00:00 (overlaps ID 1)
2010-03-01 18:00:00     2010-03-01 19:00:00 (overlaps ID 3)
Run Code Online (Sandbox Code Playgroud)

我正在拔头发,因为我可以让上述3个测试日期范围中的一个或两个失败,但不是全部.

我正在使用MySQL.

php mysql datetime

1
推荐指数
1
解决办法
4019
查看次数