php - 改进正则表达式以去掉括号内容并换行

标签 php regex

我需要删除括号内的所有内容,包括字符串中的括号,以便为我的搜索引擎处理它

到目前为止我的正则表达式是:

'/[\[{].*[\]}]/U'

这工作得很好,但如果括号内有换行符,它就不起作用

这是一个示例(我花了很多时间才缩小到 * 换行符...):

echo preg_replace('/[\[{].*[\]}]/U', ' ', strip_tags('<h1> how can i </h1>
[portfolioitem img="/fooobarbaoarbaororboabro.jpg" alt="fooobarbaoarbaororboabro"  url="fooobarbaoarbaororboabro/" imglink="Lebenslauf »" description="fooobarbaoarbaororboabro" headline="fooobarbaoarbaororboabro" link="Lebenslauf »"]

[/span][span size="6"]


<h1> wipe this away?</h1>
[portfolioitem img="fooobarbaoarbaororboabro.jpg" alt="fooobarbaoarbaororboabro" url="/fooobarbaoarbaororboabro/" imglink="foo" description="foo foo foo
bar foo foo bar foo" headline="fooo" link="Lebenslauf "]
'));

如您所见,第二个“[portfolioitem...”中有一个换行符 由于某种原因,此输出:

how can i 



wipe this away?
[portfolioitem img="fooobarbaoarbaororboabro.jpg" alt="fooobarbaoarbaororboabro" url="/fooobarbaoarbaororboabro/" imglink="foo" description="foo foo foo
bar foo foo bar foo" headline="fooo" link="Lebenslauf "]

我没有进一步了解,而且我的正则表达式还不够专业 有人可以帮我让我的正则表达式“\newline insensitive”吗?!

提前感谢您的帮助!

最佳答案

您需要在正则表达式中使用 s (DOTALL) 标志以使 dot 匹配新行。试试这个正则表达式:

/[\[{].*?[\]}]/Us

关于php - 改进正则表达式以去掉括号内容并换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24893957/

相关文章:

php - 在 Jquery 中调用 JavaScript 的问题

Java - 正则表达式 - 删除注释

python - R正则表达式从字符串中提取信息

r - 匹配字符范围内的元素 n 次

php - 返回数据库中插入的 n 行

php - 如何将 "blog"slug 添加到 wordpress 帖子?

PHP 使用 POST 时删除换行符

php - php 标签系统的问题

python - 在 Python 中比较黄金标准 csv 文件和提取值 csv 文件

regex - 如何忽略存储在PowerShell字符串变量中的转义序列?