通过PHP将自定义脚本标记转换为带有锚标记的新脚本

时间:2014-09-14 16:12:16

标签: php tags

我需要一些帮助来转换PHP中的字符串。我一直试图这样做几个小时,但我似乎只能用str_replace()转换简单的脚本。

我正在尝试转换下面的自定义脚本:

<start=0:03>Line one goes here<end=0:09>
<start=0:09>Line two goes here<end=0:12>
<start=0:20>Line three goes here<end=0:26>
<start=0:32>Line four goes here<end=0:42>

使用这样的锚标签进入新脚本:

<a href="?start=0:03&end=0:09">Line one goes here</a>
<a href="?start=0:09&end=0:12">Line two goes here</a>
<a href="?start=0:20&end=0:26">Line three goes here</a>
<a href="?start=0:32&end=0:42">Line four goes here</a>

有人可以帮忙吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

对于这种精心搜索/替换,最方便的是使用preg_replace的正则表达式模式:

$re = '/<(start=\d+:\d+)(>.*?<)(end=\d+:\d+)>/s';
$subst = '<a href="?$1&$3$2/a>';
$result = preg_replace($re, $subst, $yourstring);

模式细节:

/                  # pattern delimiter
<                  # literal <
(start=\d+:\d+)    # group 1: literal "start=", one or more digits,
                   # literal ":" and one or more digits
(>.*?<)            # group 2: literal >, all characters until <, that must be followed 
(end=\d+:\d+>)     # by capture the group 3
/s                 # pattern delimiter, and s modifier

默认情况下,.匹配除换行符之外的所有字符,s修饰符也允许它匹配换行符。

替换:

$1$2$3是指群组捕获的内容