PHP从URL中提取文本

时间:2012-06-29 23:11:05

标签: php regex query-string

我有一个看起来像这样的网址......

http://www.mydomain.co.uk/this-is-the-text-i-would-like-please.php

我希望删除文本之后的/但在.php之前并且想删除-'s

所以结果将是

这是我想要的文字

我们的想法是将其用作标题标签

我尝试过substr,strrchr,但是无法弄清楚如何得到我需要的东西。

非常感谢任何帮助

非常感谢

4 个答案:

答案 0 :(得分:1)

您可以使用basename()

$fname = basename('http://www.mydomain.co.uk/this-is-the-text-i-would-like-please.php');
$fname = str_replace('-', ' ', $fname);

编辑:

<?php
   $fname = basename('http://www.mydomain.co.uk/this-is-the-text-i-would-like-please.php');
   $fname = str_replace('-', ' ', $fname);
   $fname = substr($fname, 0, -4);
   echo $fname;
?>

结果:

this is the text i would like please

参考 LIVE DEMO

答案 1 :(得分:0)

您可以对strrpos()substr()使用简单的字符串操作,如下所示:

$str = 'http://www.mydomain.co.uk/this-is-the-text-i-would-like-please.php';
echo substr( $str, strrpos( $str, '/') + 1, -4);

will output

this-is-the-text-i-would-like-please

然后,我们使用str_replace()替换带空格的破折号,如下所示:

$str = str_replace( '-', ' ', $str);

To yield

this is the text i would like please

另一种方法是使用parse_url(),然后替换短划线,如下所示:

$str = parse_url( $str, PHP_URL_PATH);
$str = substr( $str, 1, -4); // strip off leading slash and .php from the end
$str = str_replace( '-', ' ', $str);

这也会产生所需的输出。

最后,没有字符串操作的最简单方法是使用pathinfo(),如下所示:

$str = 'http://www.mydomain.co.uk/this-is-the-text-i-would-like-please.php';
$str = pathinfo( $str, PATHINFO_FILENAME);
$str = str_replace( '-', ' ', $str);

答案 2 :(得分:0)

您也可以使用PHP的$_SERVER数组。变量$_SERVER["REQUEST_URI"]将为您提供服务器名称后的所有内容。在这种情况下,它将是“/this-is-the-text-i-would-like-please.php”。

在那之后,你可以运行任何字符串函数来打动你的想象力。以下是使用explode()substr的示例:

$noslash = substr($_SERVER['REQUEST_URI'], 1);  
/* $noslash = "this-is-the-text-i-would-like-please.php" (no leading slash)*/  

$parts = explode($noslash, ".");  
/*   
 * $parts[0] = "this-is-the-text-i-would-like-please"  
 * $parts[1] = "php"  
*/  
$title_tag = $parts[0];

格式化道歉。

答案 3 :(得分:-1)

像nickb一样,但删除了 - 以及:

echo str_replace('-',' ',substr( $str, strrpos( $str, '/') + 1, -4));

将输出

this is the text i would like please

或者如果您不想要%20,那么它将是:

 echo str_replace('%20',' ',str_replace('-',' ',substr( $str, strrpos( $str, '/') + 1, -4)));