[英]Regular Expression to get all links with certain extensions
我正在尋找一個正則表達式,它將抓取所有具有以下數組擴展名的網址:
Array
(
[0] => mp4
[1] => m4v
[2] => webm
[3] => ogv
[4] => wmv
[5] => flv
)
該數組由名為wp_get_video_extensions()
的內部 WordPress 函數返回,並且是 WordPress 識別的視頻 URL。
一個內容塊看起來像這樣,里面有 URls:
“是的,但我以合理的速度成長,”睡鼠說:“不是以那種可笑的方式。” 而他也很郁悶的起身,跨到了球場的另一邊。
一直以來,女王一直盯着帽匠,當睡鼠穿過法庭時,她對法庭的一名官員說:“把上一場音樂會的歌手名單給我!” 那個可憐的帽匠在上面顫抖着,把兩只鞋子都抖掉了。
[視頻 mp4="http://www.example.com/files/video/video1.mp4"][/video]
“拿出你的證據,”國王憤怒地重復道,“否則不管你緊張與否,我都會處決你。”
http://www.example.com/files/video/video2.flv
“我是個窮人,陛下,”帽匠用顫抖的聲音開始說,“——而且我還沒有開始喝茶——大約一個多星期后——還有黃油面包變得如此糟糕怎么辦?稀薄——還有茶的閃爍——”
我試圖讓它在那里找到兩個視頻網址並返回數組中的整個網址。
這是我所擁有的:
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
)
您的第一個問題是您沒有轉義所有“ /”。 第二個問題是,僅當這是行的開頭和結尾時,您才嘗試匹配。 這應該照顧它。
preg_match_all('~https?://(?:[a-z\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:' . implode( '|', wp_get_video_extensions() ) . ')~', $post->post_content, $matches);
使用“〜”可以使您不必轉義“ /”。
我有這樣的網址列表
https://example.com/icon.gif
https://example.com/photo.png
https://example.com/icp.css.
https://example.com/free
我不想要那些擴展名為 .png、.gif、.css、.ttf 的 url。
有什么辦法可以做到這一點?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.