preg_replace 有一些条件

用户7857373

我正在尝试替换可能出现多次的字符串。它以特定字符串开头和结尾:

some text
more text here
[li]......[/li]
[li]......[/li]
[li]......[/li]

我可以检查前的字符串[L][李]如果说之前李:是一个字符串,但不是[/ LI]然后用除换行符相同的模式与一个正则表达式一倍更换呢?

我想检查什么:

some strings 
\n // Replace this one
[li]some strings[/li] \n 
[li]some strings[/li] \n // This one is not replaced, because the string before this [li] were [/li]
[li]some strings[/li] \n
some strings

如果条件满足,则像这样

some strings 
\n\n // With this one instead
[li]some strings[/li] \n
[li]some strings[/li] \n
[li]some strings[/li] \n
some strings

到目前为止,这是我的代码,但我无法得到我想要的:

$data = preg_replace("/(.*)\([\n]/\[li\]/s", "[result]", $data);
维克多·斯特里比尤夫

您可以使用

'~(\[li\b[^]]*].*?\[\/li])(?:\R*(?1))*(*SKIP)(*F)|(\R)~s'

查看正则表达式演示

  • (\[li\b[^]]*].*?\[\/li])- 第 1 组:[li...]...[/li]子字符串(请注意,.*?withs修饰符将跨行匹配,并且将尽可能少地匹配除换行符以外的任何 0+ 个字符,因此它不会跨多个li元素溢出。)
  • (?:\R*(?1))* - 零个或多个序列:
    • \R* - 零个或多个换行符
    • (?1) - 与第 1 组相同的模式(见上文)
  • (*SKIP)(*F) - 从缓冲区中删除匹配值
  • | - 或者
  • (\R) - 匹配并捕获一个换行符到第 2 组。

替换是第 2 组中的值乘以 2($1$1其中$1引用了第 2 组中存储的值)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP的条件preg_replace

来自分类Dev

如果条件在PHP的preg_replace中

来自分类Dev

变量上有多个preg_replace

来自分类Dev

preg_replace匹配字符之间的字符串,但排除一些字符PHP

来自分类Dev

strip_tags或preg_replace从html删除一些标签?

来自分类Dev

条件preg_replace用于可选的反向引用替换

来自分类Dev

如何使用preg_replace条件来实现模板

来自分类Dev

使用Preg_Replace PHP的条件运算符

来自分类Dev

使用php preg_replace从utf-8编码的字符串中删除一些标点符号

来自分类Dev

PHP:preg_replace占用了所有内存

来自分类Dev

preg_replace没有转义“?” 参考内

来自分类Dev

preg_replace与超链接有关的问题

来自分类Dev

在ini文件行中preg_replace所有“(。+)”但等于“ =“”

来自分类Dev

Preg_replace()除去查询末尾的所有内容

来自分类Dev

php preg_replace每行空白后的所有字符

来自分类Dev

preg_replace删除所有不需要的字符

来自分类Dev

preg_replace没有转义“?” 参考内

来自分类Dev

preg_replace正在替换所有内容

来自分类Dev

Preg_replace字符串中的所有模式

来自分类Dev

php preg_replace每行空白后的所有字符

来自分类Dev

PHP的preg_replace()函数不会替换所有行

来自分类Dev

preg_replace与超链接有关的问题

来自分类Dev

PHP preg_replace HTML标记内的所有引号

来自分类Dev

使用带有职业名称的 preg_replace 并失败

来自分类Dev

preg_replace无法与Unicode一起正常使用?

来自分类Dev

将多个preg_replace合并为一个

来自分类Dev

与preg_replace一起使用的PHP substr

来自分类Dev

在一行中preg_replace多个项目

来自分类Dev

用preg_replace_callback代替preg_replace给我一个警告

Related 相关文章

热门标签

归档