首页 > 解决方案 > 如何检查带有罗马数字的句子php

问题描述

我有一个面包屑标题的句子,例如Code01 - HISTORY LESSON II - Class A。我需要把那些句子HISTORY LESSON II变成History Lesson II. 我先尝试使用strtolower函数,然后ucwords如下所示

$data = ucwords(strtolower($lesson_name));

句子变成了History Lesson Ii。你知道如何检查句子是否有罗马数字,如果有,只有罗马数字没有变成 strtolower ?

谢谢

标签: php

解决方案


如果您按原样运行代码...您可以使用 thenpreg_replace_callback匹配罗马数字并以大写形式返回它们。

代码

$string = "Code01 - HISTORY LESSON II - Class A";        // Subject string
$string = ucwords(strtolower($string));                  // Set sentence to Title Case

echo preg_replace_callback(
    "/(\b[ivx]+)\b/i",                                   // Pattern to match Roman Numberals; case insensitive
    function($matches){return strtoupper($matches[1]);}, // Function to return numerals in uppercase
    $string                                              // Subject to run pattern against
);

推荐阅读