使用preg_match和preg_match_all正则书写正确,但匹配不到的解决办法
[ 2020-06-13 10:32:56 | 作者: admin ]
使用preg_match正则书写正确,但匹配不到的解决办法
以下建立在正则书写正确,且有匹配内容的前提下,有可能是preg_match对匹配的字符串有长度限制的问题
解决办法(任选一个):
1.在php.ini中加入(随便放到哪里):pcre.backtrack_limit=-1
2.ini_set(‘pcre.backtrack_limit', 999999999); (php 5.2.0版本之后可用)
另外pcre.recursion_limit是PCRE的递归限制,这个项如果设很大的值,会消耗所有进程的可用堆栈,最后导致PHP崩溃。
实际项目应用中,最好也对内存进行限定设置:ini_set(‘memory_limit', '64M');
https://blog.lmlyz.online/index/detail/id/64.html
以下建立在正则书写正确,且有匹配内容的前提下,有可能是preg_match对匹配的字符串有长度限制的问题
解决办法(任选一个):
1.在php.ini中加入(随便放到哪里):pcre.backtrack_limit=-1
2.ini_set(‘pcre.backtrack_limit', 999999999); (php 5.2.0版本之后可用)
另外pcre.recursion_limit是PCRE的递归限制,这个项如果设很大的值,会消耗所有进程的可用堆栈,最后导致PHP崩溃。
实际项目应用中,最好也对内存进行限定设置:ini_set(‘memory_limit', '64M');
https://blog.lmlyz.online/index/detail/id/64.html
php抓取微信文章,另外就是图片防盗链的解决
[ 2020-06-10 13:17:46 | 作者: admin ]
可以获取的信息包括:文章html富文本,无图html文本,以及文章的基本信息:标题、作者、封面图片、公众号等信息。
使用方式:
$crawler = new WxCrawler();
$content = $crawler->crawByUrl($url);
content数组结构为:
```
[
[
'date' => '',//发布日期
'title'=> '',//标题
'digest'=> '',//描述
'content_url'=> '',//文章链接
'cover'=> '',//文章封面链接
'wechatname'=> '',//微信公众号名称
],
'content_html' => '',
'content_text' => '',
...
阅读全文…
使用方式:
$crawler = new WxCrawler();
$content = $crawler->crawByUrl($url);
content数组结构为:
```
[
[
'date' => '',//发布日期
'title'=> '',//标题
'digest'=> '',//描述
'content_url'=> '',//文章链接
'cover'=> '',//文章封面链接
'wechatname'=> '',//微信公众号名称
],
'content_html' => '',
'content_text' => '',
...
阅读全文…
正则批量替换函数preg_replace_callback 在php5.2 php5.3中的类中使用问题相关说明
[ 2020-06-09 21:54:10 | 作者: admin ]
p.s. 真的挺奇怪,这么常用的函数,关于类中使用网上居然很难找到有用相关资料,难道大伙都避免使用preg_replace_callback吗。有用的说明请看参考1.
下面举例说明,其中 next_year 为回调函数
php5.2和php5.3的类中都可以使用的标准方法:
阅读全文…
下面举例说明,其中 next_year 为回调函数
function next_year($matches) {
// 通常:$matches[0] 是完整的匹配项,$matches[1] 是第一个括号中的子模式的匹配项, 以此类推
return $matches[1].($matches[2]+1);
}
// 通常:$matches[0] 是完整的匹配项,$matches[1] 是第一个括号中的子模式的匹配项, 以此类推
return $matches[1].($matches[2]+1);
}
php5.2和php5.3的类中都可以使用的标准方法:
preg_replace_callback(”|(d{2}/d{2}/)(d{4})|”,array( &$this, ‘next_year’), $str);
...阅读全文…
Apache服务器.htAccess rewrite伪静态时匹配url里的中文或http网址
[ 2020-06-09 13:44:04 | 作者: admin ]
p.s. 涉及伪静态参数中有网址或者中文的,需要进行2次urlencode,因为apache伪静态前会自动urldecode一次
配置Apache的伪静态,涉及到中文正则不能匹配,
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
也试了,也不能匹配。
尝试匹配所有字母数字加上% ([a-zA-Z0-9_%]+)
也没有成功,查到Apache执行url会自动进行一次urldecode,传的值会还原成中文的,也不能匹配。
后来想到,把值进行两次 urlencode ,取的时候再进行两次 urldecode 用([a-zA-Z0-9_%]+)
就可以匹配了。
配置Apache的伪静态,涉及到中文正则不能匹配,
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
也试了,也不能匹配。
尝试匹配所有字母数字加上% ([a-zA-Z0-9_%]+)
也没有成功,查到Apache执行url会自动进行一次urldecode,传的值会还原成中文的,也不能匹配。
后来想到,把值进行两次 urlencode ,取的时候再进行两次 urldecode 用([a-zA-Z0-9_%]+)
就可以匹配了。
win2003下apache2.2 close_wait 过多导致无法响应的问题
[ 2020-06-04 13:08:06 | 作者: admin ]
p.s. win2003下fastcgi方式安装apache后也遇到些问题,做个记录。一般情况下可以依据apache和php的错误日志来做一些调整,看看修改的结果。
1、连接状态中 close_wait 太多的问题,apache服务器无响应
解决办法:
a、windows网卡防火墙的设置
windows防火墙中把80,443,apache放入例外,另外防火墙高级中选中http和https。
b、修改apache配置文件httpd.conf,加入下面语句
2、并发连接数太多,导致服务器无响应
...
阅读全文…
1、连接状态中 close_wait 太多的问题,apache服务器无响应
解决办法:
a、windows网卡防火墙的设置
windows防火墙中把80,443,apache放入例外,另外防火墙高级中选中http和https。
b、修改apache配置文件httpd.conf,加入下面语句
EnableMMAP off
EnableSendfile off
AcceptFilter http none
AcceptFilter https none
Win32DisableAcceptEx
EnableSendfile off
AcceptFilter http none
AcceptFilter https none
Win32DisableAcceptEx
2、并发连接数太多,导致服务器无响应
...
阅读全文…
PHP中Header使用的HTTP协议及常用方法小结
[ 2020-06-04 09:42:29 | 作者: admin ]
本文实例总结了PHP中Header使用的HTTP协议及常用方法。分享给大家供大家参考。具体方法如下:
阅读全文…
<?PHP
function https($num) {
$http = array (
100 => "HTTP/1.1 100 Continue",
101 => "HTTP/1.1 101 Switching Protocols",
200 => "HTTP/1.1 200 OK",
201 => "HTTP/1.1 201 Created",
202 => "HTTP/1.1 202 Accepted",
203 => "HTTP/1.1 203 Non-Authoritative Information",
204 => "HTTP/1.1 204 No Content",
205 => "HTTP/1.1 205 Reset Content",
...function https($num) {
$http = array (
100 => "HTTP/1.1 100 Continue",
101 => "HTTP/1.1 101 Switching Protocols",
200 => "HTTP/1.1 200 OK",
201 => "HTTP/1.1 201 Created",
202 => "HTTP/1.1 202 Accepted",
203 => "HTTP/1.1 203 Non-Authoritative Information",
204 => "HTTP/1.1 204 No Content",
205 => "HTTP/1.1 205 Reset Content",
阅读全文…
tcp链接的几种状态&tcpdump抓包
[ 2020-06-03 16:53:23 | 作者: admin ]
转自:https://www.iteye.com/blog/agapple-806518
说明: 通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手
里面的几个概念:
SYN: (同步序列编号,Synchronize Sequence Numbers)
ACK: (确认编号,Acknowledgement Number)
FIN: (结束标志,FINish)
TCP三次握手(创建 OPEN)
客户端发起一个和服务创建TCP链接的请求,这里是SYN(J)
服务端接受到客户端的创建请求后,返回两个信息: SYN(K) + ACK(J+1)
客户端在接受到服务端的ACK信息校验成功后(J与J+1),返回一个信息:ACK(K+1)
服务端这时接受到客户端的ACK信息校验成功后(K与K+1),不再返回信息,后面进入数据通讯阶段
数据通讯
...
阅读全文…
说明: 通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手
里面的几个概念:
SYN: (同步序列编号,Synchronize Sequence Numbers)
ACK: (确认编号,Acknowledgement Number)
FIN: (结束标志,FINish)
TCP三次握手(创建 OPEN)
客户端发起一个和服务创建TCP链接的请求,这里是SYN(J)
服务端接受到客户端的创建请求后,返回两个信息: SYN(K) + ACK(J+1)
客户端在接受到服务端的ACK信息校验成功后(J与J+1),返回一个信息:ACK(K+1)
服务端这时接受到客户端的ACK信息校验成功后(K与K+1),不再返回信息,后面进入数据通讯阶段
数据通讯
...
阅读全文…
apache Alias使用问题
[ 2020-06-03 13:11:26 | 作者: admin ]
今天在配置apache的过程中,使用了Alias,但是由于配置错误导致403 forbidden错误,不能正常访问。
首先理解一下Alias,Alias就是别名的意思,假如我的项目目录在/home/web/test 下,可以通过配置的域名http://blog.xg98.com/xxx 可以正常访问test目录下的所有内容,但是在项目开发过程中,由于一些原因导致一些文件想存放于/home/web/statics下,但是也想通过
http://blog.xg98.com/statics/xxx ,访问位于/home/web/statics 下的文件,就可以使用apache提供的Alias了。
其次,使用Alias非常方便的就可以实现上面的需求了,通过在刚在配置的test.com域名的vhosts中进行添加
apache2.2[code][/code]...
阅读全文…
首先理解一下Alias,Alias就是别名的意思,假如我的项目目录在/home/web/test 下,可以通过配置的域名http://blog.xg98.com/xxx 可以正常访问test目录下的所有内容,但是在项目开发过程中,由于一些原因导致一些文件想存放于/home/web/statics下,但是也想通过
http://blog.xg98.com/statics/xxx ,访问位于/home/web/statics 下的文件,就可以使用apache提供的Alias了。
其次,使用Alias非常方便的就可以实现上面的需求了,通过在刚在配置的test.com域名的vhosts中进行添加
apache2.2[code][/code]...
阅读全文…