Php 将输入从所有大写更改为正常大小写
我想将php中的字符串从所有大写改为普通大小写。所以每个句子都以大写开头,其余的都是小写 有一种简单的方法可以做到这一点吗?一种简单的方法是使用小写字符,大写字符作为第一个字符,如下所示:Php 将输入从所有大写更改为正常大小写,php,Php,我想将php中的字符串从所有大写改为普通大小写。所以每个句子都以大写开头,其余的都是小写 有一种简单的方法可以做到这一点吗?一种简单的方法是使用小写字符,大写字符作为第一个字符,如下所示: $str=ucfirst(strtolower($str)); 如果字符串包含多个句子,则必须编写自己的算法,例如,在句子分隔符上分解并依次处理每个句子。除了第一个字符外,您可能还需要一些启发法来处理诸如“I”之类的词以及文本中出现的任何常见专有名词。例如,类似这样的事情: $sentences=explo
$str=ucfirst(strtolower($str));
如果字符串包含多个句子,则必须编写自己的算法,例如,在句子分隔符上分解并依次处理每个句子。除了第一个字符外,您可能还需要一些启发法来处理诸如“I”之类的词以及文本中出现的任何常见专有名词。例如,类似这样的事情:
$sentences=explode('.', strtolower($str));
$str="";
$sep="";
foreach ($sentences as $sentence)
{
//upper case first char
$sentence=ucfirst(trim($sentence));
//now we do more heuristics, like turn i and i'm into I and I'm
$sentence=preg_replace('/i([\s\'])/', 'I$1', $sentence);
//append sentence to output
$str=$sep.$str;
$sep=". ";
}
我不知道有什么方法能自动做到这一点。您可能需要编写自己的规则,以处理特殊情况,如字母“i”单独使用时需要大写。你仍然会错过将人名和地名等大写的能力。完全可能
$s = "THIS IS THE LINE I'M GOING TO WORK ON";
$s = ucfirst(strtolower($s));
echo $s; //This is the line I'm going to work on
如果字符串仅包含一句话,则可以使用:
$string = ucfirst(strtolower($string));
这里有一个函数可以做到这一点:
function sentence_case($s) {
$str = strtolower($s);
$cap = true;
for($x = 0; $x < strlen($str); $x++){
$letter = substr($str, $x, 1);
if($letter == "." || $letter == "!" || $letter == "?"){
$cap = true;
}elseif($letter != " " && $cap == true){
$letter = strtoupper($letter);
$cap = false;
}
$ret .= $letter;
}
return $ret;
}
功能句\u格($s){
$str=strtolower($s);
$cap=正确;
对于($x=0;$x
资料来源:
请记住:不要将此应用于所有输入字段 如果你把“Mike DF King”改成“Mike DF King”,名字中有大写字母缩写的人可能会非常恼火
干杯:)像地名这样的首字母缩略词和专有名词呢?它们是否也应该改为小写?我需要更快地键入我的答案:)这不是只有在字符串只包含一个句子的情况下才有效吗?我想他想把这个转过来:你好。我叫杰里米。致这个:你好。我叫杰里米。