php - 如何检查带有罗马数字的句子php
问题描述
我有一个面包屑标题的句子,例如Code01 - HISTORY LESSON II - Class A
。我需要把那些句子HISTORY LESSON II
变成History Lesson II
. 我先尝试使用strtolower
函数,然后ucwords
如下所示
$data = ucwords(strtolower($lesson_name));
句子变成了History Lesson Ii
。你知道如何检查句子是否有罗马数字,如果有,只有罗马数字没有变成 strtolower ?
谢谢
解决方案
如果您按原样运行代码...您可以使用 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
);
推荐阅读
- jquery - 使用 MYSQL 数据库中的 REGEX 值
- google-api - 在 Google Play 商店获取评论时出现错误代码 410 Gone
- java - com.google.step_count.cumulative 需要 android.permission.ACTIVITY_RECOGNITION
- powershell - 如何使用 PowerShell ValueFromPipelineByPropertyName 传递多个参数
- authentication - 为什么迈瑞 BC3600 在连接 LIS 时要求提供冷火登录名和密码?
- sql - 如何将 select 语句的 IN 子句中的参数作为具有多个值的参数传递?
- algorithm - 算法时间复杂度总是 O(1) 优于 O(n)?
- extendscript - 扩展脚本对象无效
- javascript - Async/Await:被调用的函数没有等待和返回值
- android - android room暂停插入成功但不返回id