我有几个生成标签,手风琴,链接图片库,图标等的短代码,并且能够匹配他们的代码并在必要时删除它们,但我最终还删除了德语或俄语特殊字符。
短代码
<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匹配所有并且进一步复杂化应该非常简单的东西
替换[]或[] [/ ...]内的所有内容 但请保留文字和特殊字符。
任何见解都很有帮助。
答案 0 :(得分:1)
这可能有用: 替换此表达式
'/[^A-Za-z0-9?!\s]/i'
使用此表达式
'/[^\p{L}|\p{N}|\s]+/u'
它应该只保留unicode字符。
php手册上有usefull page
答案 1 :(得分:0)
这可能适合你
preg_match_all('#\b(rain|dry|clear)\b#', $string, $matches);