2

我在 php 中遇到字符串解析问题。我正在尝试创建自己的模板解析器(出于学习目的)。我决定将 url 设置为以下格式{url:abc/def},以便显示为http://www.domain.com/abc/def。我曾尝试使用 str_replace 但在这种情况下它不起作用,因为“:”之后的值可能是任何东西。分解字符串也不会起作用,因为“:”也可以出现在 html 文件的文本中。我认为这只能通过正则表达式来完成,所以建议我一些好的正则表达式也让我知道这是否可以通过任何其他方法来实现。

其他需要注意的事项。

  1. 由于它用于模板解析,并且模板可以有多个 url。
  2. Urls 不会有任何查询字符串,但如果解决方案也支持它们,我将不胜感激。
4

1 回答 1

4

然后出于学习目的:

preg_replace('/\{url:([^\}]*)\}/', $base_url.'$1', $string);

以及正则表达式的解释

  1. \{url:<-- 找到这段文字
  2. [^\}]*<-- 这意味着'任何字符,但}出现 0 次或更多次
  3. ([^\}]*)<-- 把它放在中间()我们可以稍后引用它(见'$1'
  4. \}<--结束}

只要您正在学习:请查看 http://www.regular-expressions.info/ 以获取有关正则表达式的更多信息。他们真的很棒:D

于 2013-08-26T08:11:24.880 回答