不久前,我们开始使用 Azure Media Player 在我们的网站上播放视频,直到最近它都运行良好。
曾经有效的链接:
http://trueiqmediaservice.streaming.mediaservices.windows.net/1002f113-9ccc-49a9-8549-c4bebabb47ee/Why are we makin.ism/manifest
这是定义正则表达式的方法:
private function register_embed_handler()
{
wp_embed_register_handler(
'f',
'#((http[s]?):\/)?(\/)(\/)?fhtrueiqmediaservice\.streaming\.mediaservices\.windows\.net\/?(.*)_(.*).ism\/manifest#',
[$this, 'wp_embed_register_handler']
);
}
嗯..看起来 Azure 更新了它们处理链接的方式,因此更改为:
https://mediasvcclqg331kwhpnq.blob.core.windows.net/asset-ab84ad2b-3ae4-4024-afd3-8f12cdecc266/2020-02-03 Crispin EDIT 2_1.mp4?sv=2017-04-17&sr=c&si=8b3d0ab4-5d65-470e-a26e-f7e65782f36a&sig=UW1aCdpqR7g2GSUeCD5ASiEazkSMl7q4SwiDLhtfHdQ%3D&st=2020-04-16T19%3A16%3A07Z&se=2120-04-******
我将如何处理新链接中使用的正则表达式?我对正则表达式很糟糕,并且不知道如何开始解决这个问题。所有帮助将不胜感激!
最佳答案
您之前的模式非常具体,新链接有点长。
例如,您可以使用使第一部分特定的模式,如果 .mp4
应始终存在,请确保与其匹配。
由于示例链接中唯一可能的空格位于 .mp4
的文件名中,因此您可以使用 \S*
匹配 0+ 次出现来匹配字符串的其余部分非空白字符。
https?:\/\/[^.\s]+\.blob\.core\.windows\.net\/asset-[a-f0-9]+(?:-[a-f0-9]+)+\/.*?\.mp4\S*
说明
https?:\/\/
将协议(protocol)与可选 s 匹配,然后://
[^.\s]+
匹配除.
或空白字符 之外的任何字符 1+ 次(网址的第一部分可能看起来像这样有点随机。如果不是,您可以按字面意思进行匹配)\.blob\.core\.windows\.net\/asset-
匹配.blob.core.windows.net/asset-
[a-f0-9]+(?:-[a-f0-9]+)+
匹配类似 guid 的模式,其中连字符部分重复 1 次或多次\/.*?\.mp4
匹配/
后跟至少一个可能的字符,直到遇到.mp4
\S*
匹配 0 次以上非空白字符
关于regex - Azure 媒体播放器播放错误 (0x10600003),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61274047/