在PHP中使用String中的最终' - '之后删除字符

时间:2015-08-01 13:29:41

标签: php string substr

我有一个处理当前文件的文件名的脚本,并将它们转换为标题。

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' - '中的字符?

3 个答案:

答案 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移