получить имя файла данного URL с помощью PHP и удалить расширение файла - PullRequest
0 голосов
/ 14 августа 2010

У меня есть небольшой фрагмент, который захватывает имя файла, включая расширение.

$currURL = substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);

с учетом URL-адреса ... http://www.somewebsite.com/pretty/url/here/this-is-a-page.php возвращает this-is-a-page.php.Я хотел бы иметь возможность просто вернуться, this-is-a-page.

Я довольно одержим идеей делать подобные вещи в как можно меньшем количестве кода ... как бы вы сделали это простым и элегантным образом?

Ответы [ 4 ]

4 голосов
/ 15 августа 2010

Попробуйте:

$name = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_FILENAME);

Тест:

$arr = array('http://www.example.com/path/to/page.php',
             'http://www.example.com/path/to/page.php?a=b&c=d#e',
             'http://www.example.com/path/to/page.x.php',
             'www.example.com/path/to/page.php',
             '/path/to/page.php');

foreach ($arr as $str) {
    $name = pathinfo($str, PATHINFO_FILENAME);
    echo $name . '<br />';
}

Вывод:

page
page
page.x
page
page
2 голосов
/ 14 августа 2010
$file_no_ext = preg_replace(
    array('#^.*/#', '#\.[^./]+$#'), '', parse_url($url, PHP_URL_PATH));

, например

http://example.com/fds.php/path/file
=> file
http://example.com/fds.php/path/file.php
=> file
http://example.com/fds.php/path/file.php2.php?abc=a
=> file.php2

Другое решение -

$file_no_ext = pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_FILENAME);
0 голосов
/ 14 августа 2010

Это работает для файлов .php

rtrim(substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1),".php");

0 голосов
/ 14 августа 2010
echo substr(strstr($url,'.php',TRUE),strrpos($url,'/')+1)

или

preg_match('/[^\/]+(?=\.php)/',$url,$match);
echo $match[0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...