我有一个处理当前文件的文件名的脚本,并将它们转换为标题。
e.g。 morse-1.1.1.php使用以下内容转换为“Morse”:
<?php
function pageInfo($type) {
$http = "http://";
$server = $_SERVER["SERVER_NAME"];
$filePath = $_SERVER["REQUEST_URI"];
$fileName = basename($_SERVER["PHP_SELF"]);
// creating version by removing letters up to dash
$position = strpos($fileName, '-');
$version = str_replace(".php", "", $fileName);
switch ($type) {
case "title":
$title = ucwords(substr($fileName, 0, $position));
return $title;
break;
case "version":
$numVersion = substr($version, $position+1);
return "Version ".$numVersion;
break;
case "url":
return $http.$server.$fileName;
break;
}
}
echo pageInfo("title");
?>
我的问题是我想在页面“caeser-shift-2.1.php”上使用相同的脚本,但是目前我的函数只找到第一个' - '并根据它删除字符。 如何调整我的功能,以便从文件名中删除LAST' - '中的字符?
答案 0 :(得分:0)
使用strrpos函数代替strpos。
$position = strrpos($fileName, '-');
答案 1 :(得分:0)
$str = "some-test-texts-crop;
$data = substr($str , 0 , strrpos($str ,"-") )
答案 2 :(得分:0)
你可以用一个简短的正则表达式来做到这一点:
(.*)-.*
演示:https://regex101.com/r/xR1sF1/1
PHP:
echo preg_replace('~(.*)-.*~', '$1', 'caeser-shift-2.1.php');
输出:
caeser移