Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将输入从所有大写更改为正常大小写_Php - Fatal编程技术网

Php 将输入从所有大写更改为正常大小写

Php 将输入从所有大写更改为正常大小写,php,Php,我想将php中的字符串从所有大写改为普通大小写。所以每个句子都以大写开头,其余的都是小写 有一种简单的方法可以做到这一点吗?一种简单的方法是使用小写字符,大写字符作为第一个字符,如下所示: $str=ucfirst(strtolower($str)); 如果字符串包含多个句子,则必须编写自己的算法,例如,在句子分隔符上分解并依次处理每个句子。除了第一个字符外,您可能还需要一些启发法来处理诸如“I”之类的词以及文本中出现的任何常见专有名词。例如,类似这样的事情: $sentences=explo

我想将php中的字符串从所有大写改为普通大小写。所以每个句子都以大写开头,其余的都是小写

有一种简单的方法可以做到这一点吗?

一种简单的方法是使用小写字符,大写字符作为第一个字符,如下所示:

$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”,名字中有大写字母缩写的人可能会非常恼火


干杯:)

像地名这样的首字母缩略词和专有名词呢?它们是否也应该改为小写?我需要更快地键入我的答案:)这不是只有在字符串只包含一个句子的情况下才有效吗?我想他想把这个转过来:你好。我叫杰里米。致这个:你好。我叫杰里米。