我正在尝试将{{name:something}}
等文件中的所有标记替换为某些特定值。
请注意,在{{name::something}}
中只有一些东西可能会发出警告。与{{name:title}}
或{{name:content}}
一样。那个“名字”永远都在那里。
反正
我使用了preg_match_all和preg_replace,一切都解决了。我找到了这个正则表达式的匹配项:$patmatch="/{{name:[a-zA-Z0-9._-]+}}/";
我的问题如下:
当像这样的标签与模式不匹配(它有语法错误)时,如{{notname:something}}
或{{name something}}
或{{ }}
我必须抛出异常。
我如何知道标签是否存在,但语法错误?
我可以以某种方式进行另一种模式搜索,以检查它是否为标记(在{{
和}}
之间),是否与{{name:something}}
不一样?
任何帮助将不胜感激, 谢谢!
答案 0 :(得分:1)
脱离我的头顶:
if(strpos($text, '{{name:') === false)
{
//exception
}
else
{
//properly formatted text
}
那样的东西?
答案 1 :(得分:1)
其他答案仅检查该标记是否在内容中,此标记检查真实有效性:
假设你有$ content变量来保存文件内容,你可以临时存储验证数据,如下所示:
$validation = preg_replace("/{{name:[a-zA-Z0-9._-]+}}/","",$content);
因此,您将有效剥离有效标签,现在您想查找无效标签,根据您想要的严格程度,您可以使用其中一个:
if(preg_match('/{{name:[^}]*}}/', $validation)) //found error tag
//alternatively you might want to check for typos like "nmae":
if(preg_match('/{{[^}]*}}/', $validation)) //found error tag
答案 2 :(得分:0)
也许您可以使用类似子模式,命名和检查结果