php数据匹配教程 php查询数据

php 正则表达式 匹配1到32 如何匹配? 这样可不可以[1-32]

正则是按位解析匹配的,所以[1-32]是不行的。

成都创新互联公司主营高密网站建设的网络公司,主营网站建设方案,app开发定制,高密h5微信小程序开发搭建,高密网站营销推广欢迎高密等地区企业咨询

解析:

1、1-32,包含1位数(1-9)和2位数(10-32)

2、10-32必须切割,10-19和20-29形式一样,得到[12][0-9],30-32有3[012]

3、因此得到[1-9]|[12][0-9]|3[012]

4、考虑全匹配,因此得到/^(?:[1-9]|[12][0-9]|3[012])$/,

?:表示不捕获匹配,意思就是不保存括号数据

最终:

$pattern = '/^(?:[1-9]|[12][0-9]|3[012])$/';  //这个就是1-32的正则啦

求php正则匹配td内的数据

先用正则表达式匹配tr标签内的数据,再用正则表达式匹配td标签内的数据

完整的php程序如下

?php

$str = 'tr class="text-c"td1/tdtd2/tdtd3/tdtd4/tdtd5/tdtd6/tdtd7/tdtd8 18:55/td!--设防状态--td9/td!--围栏状态--td10/tdtd class="td-status"11/tdtd class="td-status"12/tdtd class="td-manage" style="max-width: 300px;"13/td/tr';

preg_match_all ('/tr class="text-c"(.+?)\/tr/im', $str, $result);

for ($i=0; $icount($result[1]); $i++) {

$s=$result[1][$i];

preg_match_all ('/td.*?(.+?)\/td/im', $s, $matches);

for ($j=0; $jcount($matches[1]); $j++) {

echo $matches[1][$j]."br";

}

}

?

php 相同的数据老是不匹配怎么办?

用file方法获得的数组元素是包含行结束符(换行符)的,所以直接比对的话肯定是不匹配的。可以用rtrim()函数把行结束符去掉再来比对,但建议最好换成逐行读取文件的方式而不是直接用file函数读取到数组中

PHP多行匹配解决 我要匹配中间: 我用了 if (preg_match('/([^"]*)/', $str, $reg))

要匹配li/li中间多行数据,用正则表达式:li([\s\S]*?)\/li

取第一捕获组的数据就可以了.


分享题目:php数据匹配教程 php查询数据
网页URL:http://scyanting.com/article/ddechoh.html