【问题标题】:RegEx teaser正则表达式预告片
【发布时间】:2008-10-24 02:03:53
【问题描述】:

假设我们有 2 个 php 变量:

'{@url,<img src="," alt="{@name}" />}' 的输入字符串应该返回:

'<img src="http://domain.com/photo.jpg" alt="caption" />'

{tag} 最多需要 3 个参数:{@variable[,text_before][,text_after]}

实现这一点需要什么正则表达式?棘手的部分是{@..} 标签嵌套在另一个标签中。

【问题讨论】:

  • 您是否故意不使用现有的 PHP 模板引擎? :)

标签: php regex


【解决方案1】:

我认为您遇到过一种不应该使用正则表达式的情况。

很像这个。

Multi-Line group and search with Regex Multi-Line group and search with Regex

【讨论】:

  • 要详细说明,您不能真正使用正则表达式可靠地解析递归语法。由于这种语法似乎是递归的,所以这种情况下的正则表达式可能是一个错误。
【解决方案2】:

适用于 CMS。管理员可以添加列字段,然后添加模板代码以了解其在列表页面上的显示方式。 {@tags} 用于输出动态列值。本模板代码:

<p>Link: <a href="{@url}">{@name}</a> - {@date}</p>

将创建一个列表页面,如:

链接:link one - 2008 年 7 月 2 日

链接:link two - 2008 年 6 月 14 日

链接:link three - 2007 年 2 月 9 日

...

我认为人们可能希望在其他人中使用列值,因此第一篇文章中的“alt”标签示例。那么为此使用正则表达式不是一个好主意吗?

【讨论】:

  • 我认为您的示例没有很好地证明这一点,在我看来,您可以按照我在回答中的做法编写它。我弄错了吗?是的,如果你用逗号分隔,$str = explode(',', $str) 最有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多