我想将街道地址转换为Title Case.这不完全是Title Case,因为一串数字末尾的字母应该是大写的.例如史密斯街19号.
我知道我可以使用“19史密斯街”改为“19史密斯街”
$str = ucwords(strtolower($str))
但是将“19a史密斯街”改为“19a史密斯街”.
如何将其转换为“19A史密斯街”?
另一种方法,更长,但可以更容易调整其他不可预见的情况,因为这是一个非常自定义的行为.
$string = "19a smith STREET"; // normalize everything to lower case $string = strtolower($string); // all words with upper case $string = ucwords($string); // replace any letter right after a number with its uppercase version $string = preg_replace_callback('/([0-9])([a-z])/',function($matches){ return $matches[1] . strtoupper($matches[2]); },$string); echo $string; // echoes 19A Smith Street // 19-45n carlsBERG aVenue -> 19-45N Carlsberg Avenue