例子:
复制代码 代码如下:
<?php
$con = file_get_contents("//www.jb51.net/news/jb-1.html");
$pattern="/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg|.png]))['|"].*?[/]?>/";
preg_match_all($pattern,$con,$match);
print_r($match);
?>
<?php
/*
*将会输出:2
*/
echo preg_match_all("/php/i", "In my point, PHP is the web scripting
language of choice. I love php", $matches);
echo "<br/>"."n";
/*
*将会输出:Array([0]=>, PHP [1]=>PHP)
*/
$matches = array();
preg_match("/[,a-z]?s*(php)/i", "In my point, PHP is the web
scripting language of choice. I love php", $matches);
print_r($matches);
echo "<br/>"."n";
/*
*将会输出:Array([0]=>Array([0]=>, PHP [1]=>e php)
[1]=>Array([0]=>PHP [1]=>php))
*/
$matches = array();
preg_match_all("/[,a-z]?s*(php)/i", "In my point, PHP is the web
scripting language of choice. I love php", $matches,
PREG_PATTERN_ORDER);
print_r($matches);
echo "<br/>"."n";
/*
*将会输出:Array([0]=>Array([0]=>Array([0]=>, PHP
[1]=>11) [1]=>Array([0]=>PHP [1]=>13))
[1]=>Array([0]=>Array([0]=>e php [1]=>63)
[1]=>Array([0]=>php [1]=>65)))
*/
$matches = array();
preg_match_all("/[,a-z]?s*(php)/i", "In my point, PHP is the web
scripting language of choice. I love php", $matches,
PREG_SET_ORDER|PREG_OFFSET_CAPTURE);
print_r($matches);
echo "<br/>"."n";
/*
*Array([0]=>Array([0]=>e php [1]=>63)
[1]=>Array([0]=>php [1]=>65))
*/
$matches = array();
preg_match_all("/[,a-z]?s*(php)/i", "In my point, PHP is the web
scripting language of choice. I love php", $matches,
PREG_SET_ORDER|PREG_OFFSET_CAPTURE, 28);
print_r($matches);
echo "<br/>"."n";
?>
Array
(
[0] => Array
(
[0] => <img
src="//www.jb51.net/usr/themes/dddefault/images/logo.png" alt="脚本学堂"
/>
[1] => <img style="display: block; margin-left:
auto; margin-right: auto;" title="脚本学堂上线了"
src="//www.jb51.net/usr/uploads/2012/09/531656480.jpg"
alt="脚本学堂上线了2" />
[2] => <img style="display: block; margin-left:
auto; margin-right: auto;"
src="//www.jb51.net/usr/uploads/2012/09/2647136297.jpg"
alt="875EA1C00E50B4542797E24FA6E7E1F2.jpg" />
)
[1] => Array
(
[0] =>
//www.jb51.net/usr/themes/dddefault/images/logo.png
[1] =>
//www.jb51.net/usr/uploads/2012/09/531656480.jpg
[2] =>
//www.jb51.net/usr/uploads/2012/09/2647136297.jpg
)
)
1. preg_match — 执行一个正则表达式匹配 int preg_match ( string $pattern , string $subject [, array
&$matches [, int $flags = 0 [, int $offset = 0 ]]] )
搜索subject与pattern给定的正则表达式的一个匹配.
pattern:
要搜索的模式,字符串类型。
subject :
输入字符串。
matches:
如果提供了参数matches,它将被填充为搜索结果。
$matches[0]将包含完整模式匹配到的文本,
$matches[1]将包含第一个捕获子组匹配到的文本,以此类推。
flags:
flags可以被设置为以下标记值:PREG_OFFSET_CAPTURE
如果传递了这个标记,对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。
注意:这会改变填充到matches参数的数组,使其每个元素成为一个由
第0个元素是匹配到的字符串,第1个元素是该匹配字符串
在目标字符串subject中的偏移量。
offset:
通常,搜索从目标字符串的开始位置开始。可选参数 offset 用于
指定从目标字符串的某个未知开始搜索(单位是字节)。
返回值:
preg_match()返回 pattern 的匹配次数。
它的值将是0次(不匹配)或1次,因为 preg_match()在第一次匹配后
将会停止搜索。
preg_match_all()不同于此,它会一直搜索subject直到到达结尾。
如果发生错误 preg_match()返回 FALSE。
示例:
复制代码 代码如下:
复制代码 代码如下:
3.preg_split — 通过一个正则表达式分隔字符串 array preg_split ( string $pattern , string $subject [, int $limit =
-1 [, int $flags = 0 ]] )
通过一个正则表达式分隔给定字符串.
pattern:
用于搜索的模式,字符串形式。
subject:
输入字符串
limit:
如果指定,将限制分隔得到的子串最多只有limit个,返回的最后一个
子串将包含所有剩余部分。limit值为-1, 0或null时都代表"不限制",
作为php的标准,你可以使用null跳过对flags的设置。
flags:
flags 可以是任何下面标记的组合(以位或运算 | 组合):
PREG_SPLIT_NO_EMPTY:
如果这个标记被设置, preg_split() 将进返回分隔后的非空部分。
PREG_SPLIT_DELIM_CAPTURE:
如果这个标记设置了,用于分隔的模式中的括号表达式将被捕获并返回。
PREG_SPLIT_OFFSET_CAPTURE:
如果这个标记被设置, 对于每一个出现的匹配返回时将会附加字符串偏移量.
注意:这将会改变返回数组中的每一个元素,
使其每个元素成为一个由第0个元素为分隔后的子串,第1个元素为该子串在subject中的偏移量组成的数组。
返回值:
返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。
示例:
int preg_match_all ( string pattern, string subject, array matches [,
int flags] )执行一个全局正则表达式匹配
在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以
flags 指定的顺序放到 matches 中。
搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。
flags 可以是下列标记的组合(注意把 PREG_PATTERN_ORDER 和
PREG_SET_ORDER 合起来用没有意义):
PREG_PATTERN_ORDER 对结果排序使 $matches[0]
为全部模式匹配的数组,$matches[1]
为第一个括号中的子模式所匹配的字符串组成的数组,以此类推!
<?php
/*
*模式分隔符后的"i"标记这是一个大小写不敏感的搜索
*将会输出:1
*/
echo preg_match("/,s*(php)/i", "In my point, PHP is the web
scripting language of choice.");
echo "<br/>"."n";
/*
*将会输出:Array([0]=>, PHP [1]=>PHP)
*/
$matches = array();
preg_match("/,s*(php)/i", "In my point, PHP is the web scripting
language of choice. I love php", $matches);
print_r($matches);
echo "<br/>"."n";
/*
*将会输出:Array([0]=>Array([0]=>, PHP [1]=>11)
[1]=>Array([0]=>PHP [1]=>13))
*/
preg_match("/,s*(php)/i", "In my point, PHP is the web scripting
language of choice. I love php", $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
echo "<br/>"."n";
/*
*将会输出:Array([0]=>Array([0]=>e php [1]=63)
[1]=>Array([0]=>php [1]=>65))
*/
preg_match("/[,a-z]?s*(php)/i", "In my point, PHP is the web
scripting language of choice. I love php", $matches,
PREG_OFFSET_CAPTURE, 28);
print_r($matches);
echo "<br/>"."n";
?>
本文由美洲杯赔率发布于计算机教程,转载请注明出处:如何在PHP中使用正则表达式进行查找替换