如何更换正则表达式标签后换行?

我想使用preg_replace_callback使用标记替换自定义标签的所有实例。 举例来说,我使用这个代码替换的实例“[管] ... [/管]”:

preg_replace_callback('/\[tube\](.*)\[\/tube\]/', array('MyClass', 'mycallback'), $data);

的问题是,它不会匹配这样的:

[tube] http://www.somesite.com [/tube]

我怎样才能做到这一点?

注意:是的,我已经熟悉了PECL扩展设置高亮,以及PEAR的库。 但我想这样做没有他们。

--------------解决方案-------------

你将不得不使用模式修饰。

S(PCRE_DOTALL)如果设定了此修正,模式中的圆点元字符的所有字符,包括换行符相匹配。 没有它,换行除外。 这个修饰符等同于Perl的/ s修正。 负类,如[^ A]总是匹配换行符,独立于本修改的设置。

preg_replace_callback('/\[tube\](.*)\[\/tube\]/smU', array('MyClass', 'mycallback'), $data);

http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

你现在不匹配的行字符结束,请尝试使用

Pattern: \[tube\]\s([^\s]*)\s\[/tube\]

编辑:这是对我的(工作代码preg_match()使用相同的匹配库作为preg_replace_callback()

$val = '[tube]
http://www.somesite.com
[/tube]';

preg_match('|\[tube\]\s([^\s]*)\s\[/tube\]|', $val, $matches);
print_r($matches);

输出:

Array ( [0] => [tube] http://www.somesite.com [/tube] [1] => http://www.somesite.com )

你可以参考以下links..its可能对您有所帮助。

1你能提供的,为什么它是很难解析XML和HTML用正则表达式的例子吗?1

2你能提供您最喜爱的解析器解析HTML的例子吗?2

谢谢。

分类:php 时间:2015-03-15 人气:0
本文关键词: PHP,正则表达式
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.012 (s). 10 q(s)