gpt4 book ai didi

php - 使用 preg_replace 使序号全部小写

转载 作者:行者123 更新时间:2023-12-05 04:18:04 25 4
gpt4 key购买 nike

我有一列地址数据,其序号显示如下:

Cumbrian House 3 楼

2 楼 223 房间

当我希望它们像这样显示时:

3 楼,Cumbrian House

2 楼 223 房间

我正在尝试使用 preg_replace 函数将紧跟在数字后面的大写字母换成小写字母。 (我承认这是我第一次使用 preg_replace 函数。不过我对 preg_match 和正则表达式没问题)。

到目前为止我有:

$string = '3Rd Floor, Cumbrian House';

$ordinalregex = '/(^.*\d+)([A-Z])/';
$correctordinal = '$1'.strtolower('$2');

echo preg_replace($ordinalregex,$correctordinal,$string)."<br>";

但它并没有达到预期的效果,输出的线条与它第一次出现时完全一样。

谢谢

最佳答案

我认为你需要使用 preg_replace_callback因为我不确定您是否可以根据您在普通 preg_replace 中匹配的部分进行替换。您需要做的是使用一个回调函数,该函数接受匹配数组并对其进行处理(您也可以只使用 preg_match,然后单独处理匹配项)。

此示例有效(尽管它使用匿名函数进行回调,这需要 PHP 5.3.0+):

function fixOrdinals($string) { 
return preg_replace_callback("/[0-9][A-Z]/",
function ($matches) {
return strtolower($matches[0]);
},
$string
);
}

echo fixOrdinals("3Rd Floor, Cumbrian House")."\n";
echo fixOrdinals("Room 223, 2Nd Floor")."\n";
echo fixOrdinals("4Th Room, 2Nd Floor")."\n";

输出:

3rd Floor, Cumbrian House
Room 223, 2nd Floor
4th Room, 2nd Floor

关于php - 使用 preg_replace 使序号全部小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18657425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com