preg_match_all 函数:
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] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推!
例子:
$con = file_get_contents("http://www./news/xxx-1.html");
$pattern="/<[img|IMG].*?src=/blog_article/[/index.html'|\"](.*?(?:[\.gif|\.jpg|\.png]))[\'|\"].*?[\/]?>/";
preg_match_all($pattern,$con,$match);
print_r($match);
?>
结果:
Array
(
[0] => Array
(
[0] => <img src="/usr/themes/dddefault/images/logo.png" alt="" />
[1] => <img title="上线了" src="/usr/uploads/2012/09/531656480.jpg" alt="上线了2" />
[2] => <img src="/usr/uploads/2012/09/2647136297.jpg" alt="875EA1C00E50B4542797E24FA6E7E1F2.jpg" />
)
[1] => Array
(
[0] => http://www./usr/themes/dddefault/images/logo.png
[1] => http://www./usr/uploads/2012/09/531656480.jpg
[2] => http://www./usr/uploads/2012/09/2647136297.jpg
)
)
您可能感兴趣的文章:
php匹配图片地址的代码一例
PHP正则匹配日期和时间(时间戳转换)的例子
php匹配任何网址的正则表达式
php正则匹配重写html图片img路径的代码一例
PHP正则匹配获取URL中域名的代码
使用 preg_replace 函数 匹配图片并加上链接的方法
php正则表达式匹配URL中的域名
flush()、ob_flush()、ob_end_flush()三者的区别:
首先,说下buffer,它是一个内存地址空间,为4096(1kb)【在php.ini配置文件中找到output_buffering配 置】,php有php output_buffering机制,php代码在执行的时候,并不是立即将内容输出,而是想将echo/print内容输出到buffer,buffer满的时候才会将数据交给系统内核交由tcp传给浏览器显示,当开启php php output_buffering机制(默认是开启的,可以通过ob_start()函数开启)后,只有当php buffer中的数据达到了设置值,才会将buffer中 的数据发送给浏览器。
但是浏览器也是有缓存的,一些版本的浏览当数据达到256字节的时候才输出内容,flush()可以将等待输出的内容立即发送到客户端,而ob_flush()只有等待到buffer满的时候才输出。
这里为大家举一个简单的例子,作为验证:
//防止浏览器的缓存
echo str_repeat(" ",1024);
for($i=0;$i<5;$i++){
echo $i;
sleep(1);
flush();//会每隔1s输出一个数字,如果使用ob_flush()则会等待5s一起输出
}
?>
大家看下面的代码,能发现错误在哪里吗?
echo function_exists('addcslashes()');//检测是否存在该函数
echo get_magic_quotes_gpc().'<br/>';//检测是否开启自动转义
echo PHP_VERSION.'<br/>';//php版本信息
echo addcslashes("Who's John Adams?");
echo '<br/>';
$str = "Who's John Adams?";
echo addslashes()($str);
?>
输出结果是否一样呢?
10
5.3.6
Warning: addcslashes() expects exactly 2 parameters, 1 given in /data/bookuu/test/class.php on line 50
Who\’s John Adams?
一个报错,另外一个正常输出。为什么呢?
addslashes 和addcslashes不是同一个函数,发现没有,只有一个字符的区别。
但是两个函数的功能都是一样的—转义字符串。
区别是啥?
addslashes只有一个参数-字符串
addcslashes需要两个参数,字符串,分隔符.
echo addcslashes("Who’s John Adams?","’");这样写就可以正常输出了。
希望能帮助大家理解addslashes的用法。