字符串是:
<aaa>
bbb
>
应该包含换行符的通配符应该在字符串1和2以及2和3之间
由于我对正则表达式的完全误解,我写道:
$end = preg_replace('/^<aaa>(\s\S)*bbb(\s\S)*>$/','',$start);
任何人都可以帮我做这项工作吗?谢谢!
以我的起始字符串为例:
$start = "<aaa><b>QqRr</b>
<zzz>dddbbb
</zzz>Test1234</aaa>";
和end看起来像
$end = "Test1234</aaa>";
答案 0 :(得分:0)
你构建的正则表达式过于复杂。
取而代之的是但在最后一次&#34; >
&#34;之后的所有内容:
/^.*>([^>]*)$/s
^
1
s修饰符就是那个。也匹配行分隔符。
在代码中:
$end = preg_replace('/^.*>([^>]*)$/s','\1', $start);
如果这些模式对您很重要,您可以进一步扩展以匹配其他两个模式:
/^<aaa>.*bbb.*>([^>]*)$/s
^^^^^ ^^^ ^
3 2 1
答案 1 :(得分:0)
我最终使用了strip_tags();解析数据。有了它,您还可以添加允许的标签,因此任何最终都可以用\ r \ n替换以保留