我需要一些帮助来转换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>
有人可以帮忙吗?
谢谢。
答案 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
是指群组捕获的内容