tags:

views:

425

answers:

4

I tried function: strstr, but it has one problem. Suppose, the URL looks like:

http://www.example.com/index.php

With strstr, I am able to remove anything before '/', but I want just:

index

i.e., the actual name of the file without extension.

+5  A: 

I would highly suggest using the PHP parse_url() function:

$address = 'http://www.example.com/index.php';
$url = parse_url($address);
echo $url['host'];

There is no point reinventing the wheel.

cletus
+2  A: 

If it always ends in .php you can do:

basename('http://www.example.com/index.php', '.php')

If it can end with other extensions, you can do:

if (preg_match('#([^/]+)\.\w+$#', 'http://www.example.com/index.php', $matches))
    $basename = $matches[1];
reko_t
@reko_t: It may sometimes end with .html.
RPK
Edited my answer to take that into account.
reko_t
+2  A: 

If the file type can change and you are sure there are no other . in the file name e.g. index.2.php then you can use

$filename = basename('http://www.example.com/index.php');
$filename = substr($filename, 0, strpos($filename, '.'));
RMcLeod
+1  A: 

+1 cletus for the right tool for the right job, a proper URL parser. The regex hacks will fail for various query string stuff.

However it's the last path part being sought here not the host. So:

$url = parse_url($address);
$filename= array_pop(explode('/', $url['path']));
$filestem= explode('.', $filename)[0];
bobince