我正在寻找一个正则表达式,它将获取所有具有以下数组的扩展名的url:
Array
(
[0] => mp4
[1] => m4v
[2] => webm
[3] => ogv
[4] => wmv
[5] => flv
)
此数组由名为wp_get_video_extensions()
的内部WordPress函数返回,是WordPress识别的视频URls。
内容块看起来像这样,里面有URls:
'是的,但我以合理的速度成长,'睡鼠说:'不在 那种荒谬的时尚。“他非常生气地站起来,越过了 到法院的另一边。
女王从来没有离开过盯着帽匠,而且, 就像睡鼠穿过球场一样,她对其中一个说道 法庭的官员,'把我最后的歌手名单带给我 音乐会!'在那个可怜的帽匠颤抖的时候,他震撼了两个人 脱鞋了。
[video mp4 =“http://www.example.com/files/video/video1.mp4”] [/ video]
'提供你的证据,'国王愤怒地重复道,'或者我会拥有你 执行,无论你是否紧张。'
“我是一个穷人,陛下,”帽匠开始颤抖着 声音,' - 我还没开始喝茶 - 不超过一周左右 - 什么 面包和黄油变得如此薄 - 而且瞬息万变 茶 - '
我试图让它在那里找到两个视频网址并返回数组中的整个网址。
这就是我所拥有的:
preg_match_all( '/^https?:\/\/(?:[a-z\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:' . implode( '|', wp_get_video_extensions() ) . ')$/', $post->post_content, $matches);
我得到了这个:
警告:preg_match_all():未知的修饰符'['
理想情况下,我想得到这个:
Array
(
[0] => Array
(
[0] => http://www.example.com/files/video/video1.mp4
[1] => http://www.example.com/files/video/video2.flv
)
[1] => Array
(
[0] => http://www.example.com/
[1] => http://www.example.com/
)
[2] => Array
(
[0] => files/video/
[1] => files/video/
)
[3] => Array
(
[0] => video1.mp4
[1] => video2.flv
)
)
但这也是完美的,因为我可以使用parse_url()
来打破以后的休息:
Array
(
[0] => http://www.example.com/files/video/video1.mp4
[1] => http://www.example.com/files/video/video2.flv
)
答案 0 :(得分:1)
你是第一个问题,是你没有逃脱所有的“/”。第二个问题是,只有当这是行的开头和结尾时才尝试匹配。这应该照顾它。
preg_match_all('~https?://(?:[a-z\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:' . implode( '|', wp_get_video_extensions() ) . ')~', $post->post_content, $matches);
使用“〜”使您不必逃避“/".