我有几个生成选项卡、手风琴、链接图片库、图标等的快捷代码,可以匹配它们的代码,并在必要时删除它们,但我最终也删除了德语或俄语的特殊字符。
短码
<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,这会使本应非常简单的变得更加复杂
替换[]或[][/…]内的所有内容但要巧妙地保留文本和特殊字符。
任何见解都是有益的。
这可能会起作用:替换此表达式
'/[^A-Za-z0-9?!'s]/i'
用这个表达式
'/[^'p{L}|'p{N}|'s]+/u'
它应该不使用unicode字符。
php手册上有一个有用的完整页面
这可能适用于
preg_match_all('#'b(rain|dry|clear)'b#', $string, $matches);