我正在尝试使用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)
干杯
我使用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当我设置$url为www.google.com
使用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) 我有一个jQuery UI Slider的问题.该问题也出现在演示中.
在Chrome中更明显 - 如果你去http://jqueryui.com/demos/slider/#steps
并滑动滑块,你不会看到任何错误.如果您然后单击"新窗口"或转到(http://jqueryui.com/demos/slider/steps.html)在新窗口中查看演示并尝试滑动滑块,您将看到在拖动过程中,滑块会在其周围获得一个焦点框.
我有这个问题,我似乎无法解决它.
谁能指出我正确的方向?
我有以下数据;
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.