Удалить символы после финального '-' из строки в PHP

У меня есть сценарий, который обрабатывает имена файлов текущего файла и преобразует их в заголовки.

например morse-1.1.1.php преобразуется в "Морс" следующим образом:

<?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», но в настоящее время моя функция находит только первый «-» и удаляет символы на основе этого. Как мне настроить мою функцию так, чтобы я удалил символы из ПОСЛЕДНЕГО '-' в имени файла?


person Joel Biffin    schedule 01.08.2015    source источник


Ответы (2)


Используйте функцию strrpos вместо strpos.

$position = strrpos($fileName, '-');
person Peky    schedule 01.08.2015
comment
Спасибо, такое простое решение - недостаток знаний о строковых манипуляциях в php с моей стороны - person Joel Biffin; 01.08.2015

Вы можете сделать это с помощью короткого регулярного выражения:

(.*)-.*

Демо: https://regex101.com/r/xR1sF1/1

PHP:

echo preg_replace('~(.*)-.*~', '$1', 'caeser-shift-2.1.php');

Выход:

цезарь-сдвиг

person chris85    schedule 01.08.2015