簡體   English   中英

我的網址的preg_match()正則表達式模式

[英]preg_match() regex pattern for my url

我試圖為此網址制作一個模式:

http://media.network.com/flv/ea03addc753ff8d80f6be4b49a414cfd/4f3d2012/5016.flv

我只想從網址中檢索數字5016- fileid ..所以我使用了這段代碼

preg_match( '#http://media\.gilmanetwork\.com/flv/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)\.flv#', $markup, $matches );

所以如果我使用$matches[3] ,我應該得到數字5016對嗎?

你那里有個大錯誤。 gilmanetworknetwork 嘗試

'#http://media.network.com/flv/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)\.flv#'

導致

<?php
$markup = "http://media.network.com/flv/ea03addc753ff8d80f6be4b49a414cfd/4f3d2012/5016.flv";
preg_match( '#http://media.network.com/flv/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)\.flv#', $markup, $matches );
print_r($matches);
// Array ( [0] => http://media.network.com/flv/ea03addc753ff8d80f6be4b49a414cfd/4f3d2012/5016.flv [1] => ea03addc753ff8d80f6be4b49a414cfd [2] => 4f3d2012 [3] => 5016 ) 

看一看parse_url() ,結合pathinfo()

$url      = 'http://media.network.com/flv/ea03addc753ff8d80f6be4b49a414cfd/4f3d2012/5016.flv';
$filename = pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_FILENAME);

echo $filename;  // 5016

與正則表達式相比,此方法的優勢在於URL的格式可以更改(並且可能會更改得很廣泛),但是只要資源的文件名是其ID號,此代碼始終會產生正確的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM