使用 PHP preg_replace 将标识符转换为吸引人的标题

Using PHP preg_replace to convert identifiers to an appealing title

对于一个面向历史的小型项目,我希望将标识符(用于链接)转换为吸引人的标题。下面是五个示例,说明如何调用标识符以及我如何尝试使它们看起来像。但是,不幸的是我无法弄清楚。

在PHP中是否有针对此类问题的优雅解决方案?

[identifier] = [title]

这应该适合你:

只需使用 preg_replace_callback() 将您的字符串转换成您期望的格式,例如

<?php

    $str = "1904-1905-france-germany";
    echo $str = preg_replace_callback("/(\d+)(?:-(\d+))?(.*)/", function($m){
        if(!empty($m[2]))
            return $m[1] . "/" . substr($m[2], -2) . implode(" ", str_replace("-", " ", array_map("ucfirst",  explode("-", $m[3]))));
        return $m[1];
    }, $str);

?>

输出:

1904/05 France Germany

将所有元素放入数组中,并按数组元素计数过滤和格式化结果也可以:

   $subject2 = '1904-1905-france-germany-spain';

   $new = explode('-', $subject2);

if(count($new) == 2){ 

   echo $name = $new[0] . '/' . substr($new[1], 2);

} elseif (count($new) > 2) {

    $name = $new[0] . '/' . substr($new[1], 2);

        for($i = 2; $i<count($new); $i++ ){
            $name.= ' ' . ucfirst($new[$i]) . ' ';
         }
    $name = trim($name, ' ');
    echo $name;
}