浏览模式: 普通 | 列表
使用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
可以获取的信息包括:文章html富文本,无图html文本,以及文章的基本信息:标题、作者、封面图片、公众号等信息。
      
      使用方式:
      
      $crawler = new WxCrawler();
      $content = $crawler->crawByUrl($url);
      
      content数组结构为:
      ```
      [
       [
       'date' => '',//发布日期
       'title'=> '',//标题
       'digest'=> '',//描述
       'content_url'=> '',//文章链接
       'cover'=> '',//文章封面链接
       'wechatname'=> '',//微信公众号名称
       ],
       'content_html' => '',
       'content_text' => '',
...

阅读全文…
p.s. 真的挺奇怪,这么常用的函数,关于类中使用网上居然很难找到有用相关资料,难道大伙都避免使用preg_replace_callback吗。有用的说明请看参考1.

下面举例说明,其中 next_year 为回调函数
function next_year($matches) { 
           // 通常:$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);
...

阅读全文…
p.s. 涉及伪静态参数中有网址或者中文的,需要进行2次urlencode,因为apache伪静态前会自动urldecode一次

配置Apache的伪静态,涉及到中文正则不能匹配,
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
也试了,也不能匹配。
尝试匹配所有字母数字加上% ([a-zA-Z0-9_%]+)
也没有成功,查到Apache执行url会自动进行一次urldecode,传的值会还原成中文的,也不能匹配。
后来想到,把值进行两次 urlencode ,取的时候再进行两次 urldecode 用([a-zA-Z0-9_%]+)
就可以匹配了。
p.s. win2003下fastcgi方式安装apache后也遇到些问题,做个记录。一般情况下可以依据apache和php的错误日志来做一些调整,看看修改的结果。

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


2、并发连接数太多,导致服务器无响应
...

阅读全文…
本文实例总结了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",
...

阅读全文…

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),不再返回信息,后面进入数据通讯阶段
数据通讯
...

阅读全文…

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]...

阅读全文…