我有这种格式的数据来自数据库......
BUS 101S Business and Society
Run Code Online (Sandbox Code Playgroud)
要么
BUS 101 Business and Society
Run Code Online (Sandbox Code Playgroud)
注意可选的"S"字符(可以是任何大写字符)
我需要用null替换"BUS 101S"部分,这就是我想出来的......
$value = "BUS 101S Business and Society";
$sub = substr($value, 0, 3); // Gives me "BUS"
$num = substr($value, 4, 3); // Gives me "101"
$new_value = preg_replace("/$sub $num"."[A-Z]?/", null, $value);
Run Code Online (Sandbox Code Playgroud)
$new_value现在包含的值S Business and Society.所以我很接近,只需要它来替换可选的单个大写字符.有任何想法吗?
假设模式是3个大写字母,3个数字然后是可选的大写字母,只需使用一个preg_match:
$new = preg_replace('/^[A-Z]{3} \d{3}[A-Z]?/', '', $old);
Run Code Online (Sandbox Code Playgroud)
将^只会匹配一行/字符串的开头.的{3}意思是"前面的令牌3次完全匹配".的?意思是"匹配前述令牌零或一次"