PHP中类似smarty的字符串的参数和值的解析

2023-12-02

我正在尝试创建类似 smarty 的解析器。对于非常小的代码部分,并且不想实现巨大的类似 smarty 的解析器。

我想出的是:

(?:([a-zA-Z0-9]+)=(?:([^\v '"]+)|"(.*?)"|'(.*?)')|([a-zA-Z0-9]+))

On https://regex101.com/r/l5FI5f/2/看起来不错。每场比赛都是 1 或 2 个条目 + 完整匹配。

当我复制 PHP 代码时,事情看起来有所不同......

array (size=5)
  0 => string 'xddss='asdasda'' (length=15)
  1 => string 'xddss' (length=5)
  2 => string '' (length=0)
  3 => string '' (length=0)
  4 => string 'asdasda' (length=7)

不确定索引 2 和 3 来自哪里......


你需要使用分支重置组:

(?|([a-zA-Z0-9]+)=(?|([^\v '"]+)|"(.*?)"|'(.*?)')|([a-zA-Z0-9]+))
  ^                 ^

See the 正则表达式演示.

来自参考:

备择方案在分支重置组内共享相同的捕获组。语法是(?|regex) where (?|打开组,regex 是任何正则表达式。如果您在分支重置组内不使用任何交替或捕获组,则其特殊功能不会发挥作用。然后它充当非捕获组.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP中类似smarty的字符串的参数和值的解析 的相关文章

随机推荐

  • 如何使用 EF-Code-First 将大型表分成多个离散类型

    我试图将一个大表分成多个离散类型 我正在遵循这里的示例 http weblogs asp net manavi archive 2011 04 24 associations in ef 4 1 code first part 4 tabl
  • Python方式向 csv 文件添加标头

    我编写了一个合并两个 csv 文件的 Python 脚本 现在我想向最终的 csv 文件添加一个标头 我尝试按照报告的建议进行操作here我收到以下错误 expected string float found 解决这个问题最Pythonic
  • asp.net 多文件上传控件的多重上传

    我正在从事处理多个文件上传的小项目 一开始用户有一个文件上传控件 and 一个小图像 called 文件上传添加器 每一次用户点击 fileuploadadder clone of the 第一次文件上传添加到页面的控件jquery the
  • 为每次页面刷新插入新行

    您好 我在将记录插入数据库时 遇到一个奇怪的问题 在我的按钮单击事件中 我尝试将一些值插入到我的数据库中 它工作正常 插入完成后 如果我再次按 F5 或刷新浏览器 则会使用表中的先前值插入新行 为什么会发生这种情况 谢谢 当您单击该按钮时
  • 无法编辑 config.inc.php

    运行 macOS High Sierra 版本 10 13 3 zsh w iTerm2 尝试设置本地环境xampp 这在过去对我来说效果很好 但是 我现在无法访问phpmyadmin通过更改 root 密码后phpmyadmin UI 我
  • 如何使用 openpyxl 3.03 找到 excel 的最后一个非空行?

    如何使用 python 和 openpyxl 找到整个 xlsx 工作表的最后一个非空行的编号 该文件可以有之间有空行最后的单元格和空行可能有已删除的内容 此外 我不想给出特定的列 而是检查整个表 例如 图中最后一个非空行是第 13 行 我
  • 需要基于网络的 AR 解决方案进行平面检测[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找基于网络的 AR 解决方案 使用无标记检测 即使用平面检测或物体检测 尝试使用 a frame 框架和 Three js 但它们只是基于标
  • 采用 ISO8601 日期格式的两个日期之间的天数

    我想做同样的事情如何在 JavaScript 中获取两个日期之间的天数 但我想对这个日期格式做同样的事情 2000 12 31 function daysBetween date1String date2String var d1 new
  • 如何过滤多索引数据帧上的日期

    我正在寻找一种方法来过滤多索引数据框 如下所示按星期几和 或选定的日期 假设我需要 查询select only mondays 我想要的另一个查询select all days except monday and friday 第三个查询用
  • Javascript正则表达式返回true..然后false..然后true..等等[重复]

    这个问题在这里已经有答案了 我在表单上编写的验证有一个奇怪的问题 它是输入旁边的 检查用户名 按钮 输入默认值是用户名 例如 betamax 当我按 检查用户名 时 它会传递正则表达式并将用户名发送到服务器 服务器按预期运行并返回 2 以告
  • 公司如何邀请我参加 TestFlight?

    与编程略有相关 但我似乎无法弄清楚 我有一个 Apple 开发者帐户和一个 iTunes Connect 帐户 当公司邀请我时 我得到的只是 XY Ltd 邀请您加入 iTunes Connect 如果我通过链接登录没有任何反应 我将获得自
  • 如何在 iPhone 项目中使用 DCMTK

    我已经成功使用CCmake编译dcmtk3 6并在ios环境中构建它 但我不知道如何将这些编译文件包含在新的ios项目中 编译到新的 iphone 项目后我已经移动了 dcmtk 并使用 include dcm2xml h 但路径有错误 尝
  • 如何使用自动字段反序列化在 Rust Rocket 中返回 JSON 作为响应?

    我正在尝试使用 Rust 创建打印服务器 并在尝试发送 JSON 作为响应时遇到问题 我在 Rocket 文档中发现发送 JSON 作为响应非常容易 您只需使用 Serde 库即可 不幸的是 这对我来说并不是那么简单 这是我当前的代码 de
  • 升级到 OS X Mavericks 后 OpenCV 架构 x86_64 未定义符号

    我有一个运行良好的 opencv 项目 今天 我已将 OS X lion 升级到 Maverick 但 imwrite 函数出现以下错误 Undefined symbols for architecture x86 64 cv imwrit
  • 用R代码确定斜率[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有许多熔化曲线 我想使用 R 代码确定最小值 谷 和最大值 峰 之间最陡部分的斜率 拐点中的斜率对应于熔点 我能想到的解决方案要么是确定每个点的斜率 然后找到最大正值 要么通过使用
  • 值对象如何存储在数据库中?

    我还没有真正看到任何示例 但我假设它们保存在数据库内的包含实体表中 IE 如果我有一个 Person 实体 聚合根和一个相应的 Person 表 如果它有一个名为 Address 的值对象 则地址值将保存在该 Person 表中 对于我拥有
  • 使用 JQuery UI 对话框时提交操作被击中两次

    我正在使用 JQuery 和 bootstrap 编写 ASP NET MVC 4 应用程序 我的网站中有一个模式对话框功能 该功能过去一直运行顺利 直到最近另一位开发人员在网站中进行了一些与样式相关的更改 以下是我在部分视图之一中编写的代
  • jQuery 和边距:0 自动

    所以 这是一个以前被问过的问题 但我希望我们可以解决这个问题 我正在使用 jQuery 1 4 如果我定义样式 obj margin 0 auto 然后做 obj css marginLeft 结果是以像素为单位的计算值 有什么方法可以判断
  • 将列名传递给函数

    我怎样才能把这个ggplot 调用一个函数 我不知道如何让 R 识别我想要传递给函数的列名称 我遇到过几个听起来类似的问题 但我没有成功地调整想法 看here for substitute setup library dplyr libra
  • PHP中类似smarty的字符串的参数和值的解析

    我正在尝试创建类似 smarty 的解析器 对于非常小的代码部分 并且不想实现巨大的类似 smarty 的解析器 我想出的是 a zA Z0 9 v a zA Z0 9 On https regex101 com r l5FI5f 2 看起