更新 5/26
我已经修复了此问题中先前包含的正则表达式的行为,但正如其他人所提到的,我的语法仍然不正确。显然它编译的事实是由于 PHP 的preg_*
函数家族忽略了我的错误。
我绝对是 PCRE 新手,所以我试图了解存在哪些错误,以便我可以着手修复它们。我也愿意对设计/方法进行批评,正如其他人所提到的,我还将构建与 JSON 和 YAML 的兼容性,但我想继续完成这个自制的解析器,因为我有了它工作,我只需要处理表达式语法(我认为)。
以下是从整页代码中提取的所有preg_match_all
参考和一个参考:preg_replace
// matches the outside container of objects {: and :}
$regex = preg_match_all('/\s\{:([^\}]+):\}/i', $this->html, $HTMLObjects);
// double checks that the object container is removed
$markup = preg_replace('/[\{:]([^\}]+):\}/i', '$1', $markup);
// matches all dynamic attributes (those containing bracketed data)
$dynamicRegEx = preg_match_all('/[\n]+([a-z0-9_\-\s]+)\[([^\]]+)\]/', $markup, $dynamicMatches);
// matches all static attributes (simple colon-separated attributes)
$staticRegEx = preg_match_all('/([^:]+):([^\n]+)/', $staticMarkup, $staticMatches);
如果您想在上下文中查看preg_match_all
和preg_replace
引用,以便您也可以评论/批评,您可以通过以下链接查看包含的源文件。
注意:查看页面的源代码会使所有内容更具可读性 http://mdl.fm/codeshare.php?htmlobject
就像我说的,我让它按原样运行,我只是要求对我的 PCRE 语法进行监督,这样它就不是非法的。但是,如果您对结构/设计或其他任何内容有意见,我愿意接受所有建议。