网页源代码与cURL获取到的数据不符

最近在做图书馆检索,用到了PHP的cURL和正则表达。 今天遇到一个匹配不到的问题,原本以为是正则规则写错了,但后来发现,其实是正则中的文本不符。 一般情况下我是通过ctrl U 查看网页源代码来写正则规则的。通过源代码可以看到这次我要匹配的是。其中我要匹配的是1899. <span id=“ctl00_ContentPlaceHolder1_countlbl” style=“color:Red;”>1899</span> 于是我使用了下面的规则: #<span id=“ctl00_ContentPlaceHolder1_countlbl” style=“color:Red;”>([^"]+)</span>#iUs 但始终无法匹配出结果。后来将cURL获取到的网页数据输出来,看到的数据竟然和网页源代码的不一致: <span id=“ctl00_ContentPlaceHolder1_countlbl”><font color=“Red”>1899 至此匹配的问题解决。 现在仍然无法理解缘何不同,若游客有见解,留下言吧 :)

2015-03-06 · 1 分钟 · 19 字

PHP获取带#的Url的方法

引子: 事情的经过是这样的。最近在做微信公众平台开发,其中有一个模块是实现微信授权登录。 页面A(链接为:domain.com/index.php/Store/route.html#/bbb/1/aaa) 微信授权接口文件(链接为:domain.com/index.php/Wechat/Oauth) 业务是这样的: 用户点击页面A,若检测到未授权登录,则跳转到微信授权接口文件,授权完成后再跳转回页面A。 很显然,在页面A检测到未授权,跳转前必须保存当前页面的Url。 那么问题来了,小伙伴用了AngularJs的路由。Url中是带有#的,服务器端不可能获取到整个Url,只能获取到domain.com/index.php/Store/route.html 尽管可以使用html5模式,把#去掉。但为了不大费周章,还是想了其他方法。 Js是可以获取包括hash值的整个Url的。所以我自然得想到使用Js存Cookie,然后用PHP来取。但是实践告诉我,这种方法不行。因为是先执行服务器脚本语言再执行Js的。那么要刷新2次页面才能看到Cookie被echo出来了。**但是,亲,**哥是要在A页面跳转到接口文件啊。这么一跳转,根本没办法存储到Cookie。 说了那么多“废话”,讲讲解决办法吧。 A页面:使用js获取到带#的整个Url,然后使用replace将#替换为任意字符串,比如|sharp|。然后将该Url作为参数,用window.location.href跳转到接口文件。 接口文件:$_GET获取到传过来的Url。再用PHP的方法将|sharp|替换回#。接着就可以做大事啦~~~ 最后附上主要代码: A页面 echo “ var targetUrl = document.location.href; targetUrl = targetUrl.replace(’#’,’|sharp|’); window.location.href=‘http://domain.com/index.php/Wechat/Oauth?targetUrl='+targetUrl ”; 接口文件: $targetUrl =$_GET[’targetUrl’]; $targetUrl = str_replace(’|sharp|’,’#’,$targetUrl);

2015-01-27 · 1 分钟 · 32 字