【问题标题】:Preg replace everything in square brackets including brackets but watch for special charsPreg 替换方括号中的所有内容,包括括号,但注意特殊字符
【发布时间】:2014-10-29 12:48:21
【问题描述】:

我有几个短代码可以生成标签、手风琴、链接图片库、图标等,并且能够匹配它们的代码并在必要时删除它们,但我最终也删除了德语或俄语特殊字符。

简码

<br/>
[tabs id="myid" type="tabnav"]<br/>
[tabsgroup title="Tab title" active="1"]Tab für goes here...[/tabsgroup]<br/>
[tabsgroup title="Tab title" active="0"]Tab für goes here...[/tabsgroup]<br/>
[tabsgroup title="Tab title" active="0"]Tab Хёз но фырре доктюж котёдиэквюэ, нэ убяквюэ янжольэнж вэл ...[/tabsgroup]<br/>
[/tabs]<br/>

删除短代码

$cleanStr = preg_replace(array(
    '/parse/',
    '/pre/',
    '/imgs/',
    '/fa/',
    '/media/',
    '/stabsgroup/',
    '/stabs/',
    '/note/',
    '/acgroup/',
    '/acs/',
    '/stabs/',
    '/url="(.*?)"/',
    '/link="(.*?)"/',
    '/poster="(.*?)"/',
    '/width="(.*?)"/',
    '/height="(.*?)"/',
    '/resp="(.*?)"/',
    '/id="(.*?)"/',
    '/title="(.*?)"/',
    '/type="(.*?)"/',
    '/active="(.*?)"/',
    '/color="(.*?)"/',
    '/name="(.*?)"/',
    '/target="(.*?)"/',
    '/class="(.*?)"/',
    '/image="(.*?)"/',
    '/border="(.*?)"/',
    '/radius="(.*?)"/',
    '/icon="(.*?)"/',
    '/close="(.*?)"/',
    '/effect="(.*?)"/',
    '/days="(.*?)"/',
    '/hours="(.*?)"/',
    '/[^A-Za-z0-9?!\s]/i', // this here removes the brackets but it also removes  special chars
), array(
    ''
), $str);

我确实尝试过使用一个衬里,但在某些情况下它不起作用,所以我不得不像你在上面看到的那样排列数组

这是一个班轮 http://regex101.com/r/gY3pT3/1

它适用于 js 的 g 修饰符,但对于 php,我必须从 preg_replace 切换到 preg match all 并进一步使应该非常简单的事情复杂化

替换 [] 或 [] [/...] 中的所有内容 但保留文本和特殊字符。

任何见解都是有帮助的。

【问题讨论】:

    标签: php regex preg-replace


    【解决方案1】:

    这可能有效: 替换这个表达式

    '/[^A-Za-z0-9?!\s]/i'
    

    用这个表达

    '/[^\p{L}|\p{N}|\s]+/u'
    

    它应该不理会 unicode 字符。

    php 手册上有一个usefull page

    【讨论】:

    • 不错的一个芽,也缺少空格,但我想我会找到那个。我在数组中的最后一个允许空格
    【解决方案2】:

    这可能对你有用

    preg_match_all('#\b(rain|dry|clear)\b#', $string, $matches);
    

    【讨论】:

    • 这是一个非常不完整的答案。请解释所涉及的正则表达式,并展示一个与 OP 问题更相关的示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多