pregmatch(请问php里面preg_match与preg_match_all有什么区别)

请问php里面preg_match与preg_match_all有什么区别

preg_match只匹配一次,preg_match_all是全文匹配,即所有跟表达式一致的都找出来。
  举个例子:abc
  1、取出符号里的字符。preg_match_all(“/(\w)+/“,“abc“,$abc);print_r($abc);
  显示结果为
  Array( = Array ( = a = b = c )
   = Array ( = a = b = c )
  )
  2、preg_match(“/(\w)+/“,“abc“,$abc);print_r($abc);
  显示结果
  Array( = a = a)
  这两个函数的区别就是:preg_match_all()搜索匹配全部情况;preg_match()搜索匹配到一个后终止。
preg_match() 返回 pattern 所匹配的次数。要么是 0 次(没有匹配)或 1 次,因为 preg_match() 在第一次匹配之后将停止搜索。preg_match_all() 则相反,会一直搜索到 subject 的结尾处。如果出错 preg_match() 返回 FALSE。
希望我的回答能给你带来帮助!

preg_match怎么匹配可输入的内容怎么匹配可输入的内容

取中间内容请不要加^和$
匹配0-9之间数字6个字符
if(preg_match(’/^{1,6}$/’),$_GET[’input’]){
//匹配通过
echo “你输入了{$_GET[’input’]}“;
}else{
//未匹配到
echo ’请输入1到6个数字’;
}

php 正则表达式 preg_match 如何写

根据规范限制位数 以及限制是否输入的是 0905或者95或者8开始
preg_match(’/(0905{5}|95{7}|8{4})/isU’,$string,$arr);
我这里有三种会员卡规范 以及规律
例如:
09051XXXX 一共9位 0开始或 0905开始

951XXXX 一共7位 9开始或 95开始

8XXXX 一共5位 8开始
if(preg_match(’/(0{8}|0905{5})/is’,$string,$arr))
{}
elseif(preg_match(’/(95{7}|9{8})/is’,$string,$arr))
{}
elseif(preg_match(’/8{4}/is’,$string,$arr))
{}

PHP preg_match函数的用法 不是很清楚

preg_match 根据正则匹配字符串用的,对于新手来说比较复杂,不太容易理解。可以看看php的正则基本规则。理解之后就很不是很难了
第一段是根据第二个参数$user_number变量,匹配一个身份证号的(不完全肯定)(1)\d{17} :长度为17的必须是数字的字符串,(2)[\d|X]:长度为1的数字或“X”,(3)|\d{15}或者是长度为15的数字字符串。把匹配的结果保存到$counts中。
第二个是电话号的,具体你可以自己再研究一下。

PHP中preg_match(’/^\w{5,16}$/is’, $PassWord )是什么意思

preg_match()是正则表达式匹配的意思,这个是值匹配一次正则表达式
’/^\w{5,16}$/is’,是一个正则表达式
其中的“^“表示,以这个字符类中字符开头,\w+,表示一个或多个\w,最少一个
你这个{5,16}则是限定范围,
$PassWord 是穿进去的参数,应该是你设置的密码
这个的意思是,$PassWord 的值必须是5-16位的字符

preg_match用法

preg_match — 进行正则表达式匹配
说明
int preg_match ( string pattern, string subject [, array matches [, int flags]])
在 subject 字符串中搜索与 pattern 给出的正则表达式相匹配的内容。
如果提供了 matches,则其会被搜索的结果所填充。$matches 将包含与整个模式匹配的文本,$matches 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。
flags 可以是下列标记:
PREG_OFFSET_CAPTURE
如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其偏移量。本标记自 PHP 4.3.0 起可用。
flags 参数自 PHP 4.3.0 起可用。
preg_match() 返回 pattern 所匹配的次数。要么是 0 次(没有匹配)或 1 次,因为 preg_match() 在第一次匹配之后将停止搜索。preg_match_all() 则相反,会一直搜索到 subject 的结尾处。如果出错 preg_match() 返回 FALSE。
提示: 如果只想查看一个字符串是否包含在另一个字符串中,不要用 preg_match()。可以用 strpos() 或 strstr() 替代,要快得多。
例子 1. 在文本中搜索“php”
《?php
// 模式定界符后面的 “i“ 表示不区分大小写字母的搜索
if (preg_match (“/php/i“, “PHP is the web scripting language of choice.“)) {
print “A match was found.“;
} else {
print “A match was not found.“;
}
?》
例子 2. 搜索单词“web”
《?php
/* 模式中的 \b 表示单词的边界,因此只有独立的 “web“ 单词会被匹配,
* 而不会匹配例如 “webbing“ 或 “cobweb“ 中的一部分 */
if (preg_match (“/\bweb\b/i“, “PHP is the web scripting language of choice.“)) {
print “A match was found.“;
} else {
print “A match was not found.“;
}
if (preg_match (“/\bweb\b/i“, “PHP is the website scripting language of choice.“)) {
print “A match was found.“;
} else {
print “A match was not found.“;
}
?》
例子 3. 从 URL 中取出域名
《?php
// 从 URL 中取得主机名
preg_match(“/^(http:\/\/)?([^\/]+)/i“,
“http://www.php.net/index.html“, $matches);
$host = $matches;
// 从主机名中取得后面两段
preg_match(“/[^\.\/]+\.[^\.\/]+$/“, $host, $matches);
echo “domain name is: {$matches}\n“;
?》

php : preg_match() 是什么

preg_match — 进行正则表达式匹配。并且只匹配一次
preg_match() 返回 正刚或是字符 所匹配的次数。要么是 0 次(没有匹配)或 1 次,因为 preg_match() 在第一次匹配之后将停止搜索。如果出错 preg_match() 返回FALSE。

php中的preg_match()函数

preg_match()函数用于正则表达式知识匹配,如果成功则返回1,否则返回0。

Preg_match()在成功匹配之后停止匹配,如果要实现所有结果的内部匹配,则使用preg_match_all()函数。

php函数取得字符串长度:

1.首先,创建一个新的PHP文件并将其命名为test.php。

2.在test.php文件中,定义两个字符串,一个是纯英文字符串,另一个是中英文混合字符串。

3.使用strlen()方法来计算长度,从程序执行结果来看,strlen()方法计算的字符串长度$Str1是正确的,第二个字符串$Str2是错误的。

4.创建一个新的utf8_strlen()函数,并将其参数定义为$string,默认为null。

5.在utf8_strlen()函数中,使用preg_match_all()方法通过正则表达式分割字符串,并将其保存在$match变量中。最后,计算从count()方法获得的数组元素的数量,并返回结果。

6.使用utf8_strlen()分别计算$Str1和$Str2字符串的长度,并使用echo将结果输出到页面。

7.在浏览器中运行test.php文件并查看程序执行的结果。从这两个结果可以看出,统计字符串长度已经成功实现。

PHP函数preg_match_all正则表达式的基本使用详细解析

了解正则表达式之前,须要掌握一些常用的正则表达式的基础知识,这些如果能记得最好记得,记不住须要用的时候能查到就行,就多个特殊字符,所以说正则表达式玩的就是特殊,具体大家可以查看更加细致的说明。
preg_match_all函数具体说明大家可以查看PHP手册,本文运用
preg_match_all用于测试正则表达的效果。
实例代码:
复制代码
代码如下:
$html
=
’《div
id=“biuuu“》jb51.net《/div》《div
id=“biuuu_2“》jb51.net2《/div》《div
id=“biuuu_3“》jb51.net3《/div》’;
实例要求:分别将每一个DIV元素的ID和内容取出,如biuuu,biuuu_2,biuuu_3,jb51.net,jb51.net2和jb51.net3(一些常用的抓站要领就是这样匹配的)
分析:字符串是一个基本的HTML元素,每一个DIV元素对应该一个ID和内容,并且是独立的,首先考虑如何
取出一个DIV内的ID值和内容,如:jb51.net,然后匹配其它类似的元素。一个DIV中须要取出两个值,也就是两个匹配的表达式,第一个表达式用于匹配ID值(biuuu),第二个表达式用于匹配ID的内容(jb51.net),正则表达式常用的表达式运用小括号,那么前面的元素将会变成如下形式:
《div
id=“(biuuu)“》(jb51.net)《/div》
《div
id=“(表达式1)“》(表达式2)《/div》
好,运用如上小括号把须要匹配的区域执行
了划分,接下来就是如何
匹配各个表达式内的内容,我们猜想一个ID可能是字母,数字或下划线,那这就变得基本了,运用中括号就可以实现,如下:
表达式1:[a-zA-Z0-9_]+
(表示匹配大小写字母,数字和下划线)
那如何
匹配表达式2,因为ID的内容可以是任意的字符,但是要留心,不能匹配《或》字符,因为如果匹配这两个字符将会把后面运用的DIV都匹配出来,因此须要排除这两个字符开始的元素,也就是不匹配以《或》字符,如下:
表达式2:[^《》]+
(表示不匹配《和》字符)
这样,须要匹配的子表达式就实现了,但是还要须要匹配一个
的表达式,要领如下:
表达式:/
’\“(表达式1)\“’》(表达式2)《\/div》/
留心其中的双引号“和/须要运用
\转义字符转义,然后把前面两个表达式放进去,
如下:
’\“([a-z0-9_]+)\“’》/《div
id=\“([a-z0-9_]+)\“》([^《》]+)《\/div》/
这样就实现一个匹配每一个DIV元素ID值和内容的正则表达式,然后运用
preg_match_all函数测试如下:
复制代码
代码如下:
$html
=
’《div
id=“biuuu“》jb51.net《/div》《div
id=“biuuu_2“》jb51.net2《/div》《div
id=“biuuu_3“》jb51.net3《/div》’;
preg_match_all(’/《div\sid=\“([a-z0-9_]+)\“》([^《》]+)《\/div》/’,$html,$result);
var_dump($result);
结果:
复制代码
代码如下:
array(3)
{
=》
array(3)
{
=》
string(30)
“《div
id=“biuuu“》jb51.net《/div》“
=》
string(33)
“《div
id=“biuuu_2“》jb51.net2《/div》“
=》
string(33)
“《div
id=“biuuu_3“》jb51.net3《/div》“
}
=》
array(3)
{
=》
string(5)
“biuuu“
=》
string(7)
“biuuu_2“
=》
string(7)
“biuuu_3“
}
=》
array(3)
{
=》
string(8)
“jb51.net“
=》
string(9)
“jb51.net2“
=》
string(9)
“jb51.net3“
}
}
共有三个表达式,分别显示每一个表达式匹配的值,并以数组的形式存储,这样就把每一个DIV元素的ID和内容取出。运用正则表达式最主要还是要知道须要什么,然后跟椐须要执行
匹配,并且思路清晰,并适当的借助preg_match_all函数执行
输出调试,非常方便。

preg_match()提取出数字

//匹配所有《p》《/p》标签中的数字 最少为0位
$preg = ’#《p》.[人]{0,}.《/p》#isU’;
//all正则匹配所有
//三个参数     正则   字符串     生成的新数组
preg_match_all($preg,file_get_contentes($url),$new_arr);
print_r($new_arr);
//代码不一定能用 只是思路,毕竟没试验过

  模式匹配符:

  \:转义字符  例如:\b转义了b

  ^:正则表达式开始符号

  $:正则表达式结束符号

  *:匹配前面的字符出现0次或者n次

  +:匹配前面的字符出现1次或者n次

  ?:匹配前面的字符出现0次或者1次

  .:匹配除了换行符以外的所有单个字符

  |:或者的意思,例如x|y  匹配x或者y

  {n}:匹配前面的n个字符

  {n,m}:匹配至少n个最多m个前面字符

  [xyz]:匹配中括号里的任意一个字符

  [^xyz]:匹配除了中括号里的任意一个字符等价于

  \w:匹配任意一个数字或字母或下划线等价于[A-Za-z0-9_]

  \d:匹配任意一个0–9之间的数字

  模式修正符:

  i:忽略大小写