【发布时间】: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