改进正则表达式以使用换行符去除括号内容

时间:2014-07-22 17:28:57

标签: 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不敏感”?!

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

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

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