我有以下字符串
Something {{ another thing. You can use html code also, eg: <b>hello</b>}}
我正在使用以下RegEx替换Something
之后的字符串
$description = preg_replace(
'/{{(.*)}}/i', '$2', $desc
);
输出为:某物
很好。
我正在使用Wysyng编辑器,用户可以使用该表达式,因此系统必须根据上述代码进行分隔。
有两个麻烦:
如果用户键入类似的内容不起作用
Something
{{
Another text
}}
第二个麻烦。编辑器会生成上述表达式
<p>Something</p>
<p>{{</p>
Another Text
<p>}}</p>
我正在使用strip_tags
来获取真实的字符串。有办法吗?
答案 0 :(得分:1)
要使.
与字符串中的换行符匹配,必须使用s
修饰符:
s(PCRE_DOTALL)
如果设置了此修饰符,则模式中的点元字符将匹配所有字符,包括换行符。没有它,换行符将被排除。此修饰符等效于Perl的/ s修饰符。否定类(例如[^ a])始终与换行符匹配,而与该修饰符的设置无关。
因此要将s
添加到修饰符列表中:
preg_replace('/{{(.*)}}/is', '$2', $desc);
i
修饰符(不区分大小写)实际上也没有任何用处,因为您只匹配特殊字符。
我还建议将.*
修改为.*?
,这样您就不会最终在文本的后面匹配替换的结尾}}
。
对于第二种情况,我将检查子字符串是否以所需的标签开头和结尾,然后将其删除-否则出错。根据使用情况,使用strip_tags
可能会删除您实际希望拥有的更多功能。