2011-12-08 29 views
1

から私は、URLからだけでスクリプト名を抽出する方法を正規表現の助けを探して:抽出スクリプト名URL

私が持っている:

"http://www.example.com/index234.html" 

"index234"を受け取るために探していますか?

+0

これはほぼ正確にこの質問http://stackoverflow.com/questions/8426568/extract-file-name-と同じですバックスラッシュの代わりにフォワードスラッシュを扱っている以外は、パスからの正規表現を使用しています。 –

答えて

3

使用this正規表現:

/^http:\/\/(www\.)?example.com\/(?<scriptName>.*)\.html$/ 

編集:

this正規表現が異なるURLやパスのために働くだろう

/^http:\/\/(www\.)?(.*\/)*(?<scriptName>.*)\..*$/ 
+0

私は別のサイトとパスのようにすることができます: 'http:// www.difrentsite.org/folder/subfolder/newindex1.php'そして' newindex1'が必要です – bensiu

+0

@bensiu私は答えを編集しました。 – fardjad

+0

私は 'www'部分を削除してより頑強にし、'/^ http:\/\ /?(。* \ /)*(?。*)\ .. * $/'' +1のために ' ' - ありがとう – bensiu

0

試し:http://([\w\-\.]+/)+([\w\-\.]+)\.html スクリプト名は、第二のキャプチャであります($ 2または\ 2)。必要に応じてプロトコルとファイル拡張子を調整することができます。実際にはどの文字が実際にURL名に使用できるのかわからないので、この場合は文字、数字、ハイフン、およびドットのみを仮定します。

6

使用parse_url

$url = 'http://www.example.com/index234.html'; 
$parts = parse_url($url); 
preg_match('~([^/]+)\..+$~', $parts['path'], $m); 
print_r($m); 

出力:

Array 
(
    [0] => index234.html 
    [1] => index234 
) 
+1

固溶 - ありがとう! –

関連する問題