如何获得没有扩展名的文件名?

问题描述:

我有一个网站,我正在处理超过11000个产品页面。他们写的是.php如何获得没有扩展名的文件名?

我想将文件名称(不带文件扩展名.php)添加到识别当前页面的文件中。

举例: 如果文件名是

product1.php 

的代码

$thisPage = "product1" 

的线路将被添加到每个页面withing顶部PHP标签。我试图找到解决这个问题的时间比我想承认的要长,而我是一个PHP新手,看起来他们必须是一个简单的解决方案。

任何帮助,将不胜感激


$currentPage = $_SERVER["PHP_SELF"]; 

是我知道的使用来获取文件的名称。我可以截断$ currentPage从字符串中删除“.php”。然后,我将留下我要写入文件的文本。

我遇到的困难是将它写入文件,而不是回显名称,而是实际将文件名作为新字符串写入以备后用。

因此,我将留下

$currentPage = "the-truncated-file-name-text" 

唯一的每个页面使用索引

因此,像“写($当前页)”将文件

php.net是一个美妙资源。

pathinfo函数是你想要的。它将路径或文件名分割为其组成部分。

或者,您可以在'。'上爆炸。

list($file, $ext) = explode('.',$myfile); 

将其写入到文件中,然后调用

file_put_contents($filename, $stringtoadd, FILE_APPEND); 

但是请注意,这样做将会使你的文件不再是有效的CSV文件的最后一行的格式不正确。

+0

但是,我如何将它作为硬编码字符串写入当前文件? – ZombieBunnies 2012-03-09 23:21:09

这个怎么样?

$filename = basename(__FILE__, '.php'); 
+0

+1比我的回答更简洁。 – Josh 2012-03-09 22:59:25

$thisPage = pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME); 

你想远离魔术常量像__FILE__离开,因为他们将返回当前正在运行的文件,即,如果代码是一个包含文件中,包含的文件的路径将被退回,而不是访问者所要求的脚本。

您可以使用scandir来获取目录中文件的列表。然后使用substr从文件名中删除最后4个字符。