我想在评论中找到所有视频时长链接并将其转换为锚标记。
持续时间可能如下:
01:20:55 (h:m:s)
20:30 (m:s)
1:21 (m:s)
1:35:12 (h:m:s)
我觉得我可能会很接近,但对于正则表达式来说还是新手
^([\d]{1,2}\:)?([\d]{1,2})?\:([\d]{1,2})$
将在此上下文中使用:
$parsedTimeCommentString = preg_replace("/^([\d]{1,2}\:)?([\d]{1,2})?\:([\d]{1,2})$/",
"<a href=\"#\" class=\"video-seek\" data-seek=\"$1:$2:$3\">$1:$2:$3</a>",
$comment['comment']);
答案 0 :(得分:3)
答案 1 :(得分:1)
看起来可能很奇怪,但我认为看起来应该更像这样:
(?<![\d:])(?:(?:(\d\d?):([0-5]\d))|([0-5]?\d)):([0-5]\d)(?![\d:])
保持格式:hh:mm:ss,h:mm:ss,mm:ss,m:ss并避免匹配无效(用于时间格式化)字符串,如:1:3:4,14:1:14 ,45:4:4,88:99,345:456(如45:45),2:3等。
它以1美元和4美元的秒数捕获小时数,但是分钟数在2美元或3美元中被捕获。
答案 2 :(得分:0)
我会删除行锚(^ $),以便您的字符串可以匹配其他文本中的时间戳。此外,您应该将第二个捕获组设置为非可选,以便类似于&#39;:3&#39;无法通过。并且您希望使用/ g使其全局化,以便它替换所有出现的内容。像这样:
/([\d]{1,2}\:)?([\d]{1,2})\:([\d]{1,2})/g