preg_match_all rtmp链接及其标题

时间:2015-07-31 22:31:06

标签: php regex preg-match preg-match-all

大家好,我有这个字符串:

All text has PHP_EOL at end of its line.
Some TITLE OF RTMP STREAM
rtmp://slww/best
Some simple text what not required to find
Another not required string line

使用此正则表达式来获取rtmp或http链接,但我如何才能找到它的标题?

preg_match_all("/(rtmp:+\S*)|(http:+\S*)/s", $input_lines, $output_array);

rtmp或html正则表达式正常工作,但我也需要捕获rtmp链接的标题。

尝试添加^.*$^后跟我的rtmp http模式,^为行首,$为其结尾。 /s选项用于搜索多行,包括换行符。

/^.*$^(rtmp:+\S*)|(http:+\S*)/s

但无法弄清楚我怎么能找到它的头衔。 我试图存档的简单方法是将整行放在我的正则表达式之上或者低于我的正则表达式。

在某些情况下,我需要抓住下面的整行。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您实际上可以使用此正则表达式:

(?m)^(?<TITLE>.*)\R+(?<url>(?:rtmp|http):\S*)

请参阅demo

请注意,您使用/s单线修改器强制.匹配换行符,但您没有在模式中使用点。您正在寻找mulitline /m修饰符,使^在行的开头匹配(我使用的是内联版本(?m))。

我没有使用单行修饰符,因此.*将仅匹配URL行之前的行。我的正则表达式中的\R匹配换行符序列。