-1

我有一个位置字段,人们可以在其中输入他们想要的任何内容,但通常他们会以“城镇,首字母”的格式输入内容。例如,这些条目...

New york, Ny
columbia, sc
charleston
washington, DC
BISMARCK, ND

理想情况下会变成...

New York, NY
Columbia, SC
Charleston
Washington, DC
Bismarck, ND

显然我可以ucfirst()在字符串上使用来处理第一个字符,但这些是我不知道该怎么做的事情(如果他们可以做到的话)......

  • 逗号后的所有内容都大写
  • 小写逗号前的所有内容(第一个字符除外)

这很容易实现还是我需要使用某种正则表达式函数?

4

1 回答 1

1

您可以简单地将其切碎并修复它。

<?php
$geo = 'New york, Ny
columbia, sc
charleston
washington, DC
BISMARCK, ND';
$geo = explode(PHP_EOL, $geo);

foreach ($geo as $str) {

    // chop
    $str = explode(',', $str);

    // fix
    echo 
    (!empty($str[0]) ? ucwords(strtolower(trim($str[0]))) : null).
    (!empty($str[1]) ? ', '.strtoupper(trim($str[1])) : null).PHP_EOL;
}

https://3v4l.org/ojl2M

尽管您不应该相信用户输入正确的格式。而是找到所有状态的巨大列表并自动完成它们。也许像https://gist.github.com/maxrice/2776900 - 然后验证它。

于 2017-12-05T03:57:36.507 回答