2
A
回答
10
一个简单的方法是使用strtolower使字符串小写,并且ucfirst为大写的第一个字符如下:
$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=". ";
}
+0
我需要更快地输入我的答案:) – 2009-06-09 15:04:09
2
我不知道任何方法,将自动做到这一点。你可能不得不写一些自己的规则,这些规则需要像字母'i'这样的特殊情况在需要时自行处理。你还会错过利用人和地名等东西的能力。
1
完全有可能
$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
1
如果字符串包含只有1句话,那么你可以使用:
$string = ucfirst(strtolower($string));
2
这里有一个功能,将做到这一点:
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;
}
来源:
0
要记住的一点:不要将其应用于所有输入字段!如果你把“迈克DF王”到“迈克Df的王”
人们在他们的名字全部大写首字母可以得到强大的恼火
欢呼:)
相关问题
- 1. 全部大写为正常情况下
- 2. 如何使用Jquery将所有输入值更改为大写?
- 3. 更改输入大写
- 4. 如何在缩写字母大写的情况下更改大写字母的大小写?
- 5. MediaRecorder在没有挑衅的情况下更改大小
- 6. 如何在输入时将输入更改为大写
- 7. 如何在不使用toUppercase的情况下将字母从小写更改为大写?
- 8. 在所有情况下
- 9. 在不影响数据库的情况下将输入表单更改为textarea
- 10. 在不更改图像大小的情况下更改img容器的大小?
- 11. 针对不同的情况下(并非所有情况下)
- 12. 如何在不改变大小写的情况下使用str_replace?
- 13. 有没有什么办法可以改变mysql中所有表的列名大小写的情况下
- 14. 正则表达式在所有情况下都不能正常工作
- 15. 哪种方法在线程经常写入的情况下更好?
- 16. 在不更改PHP格式的情况下读写JSON文件
- 17. mod_rewrite - 更改URL的情况下
- 18. Javascript ES6常数可以在不允许的情况下更改
- 19. imul在什么情况下写入edx?
- 20. 在不使用WinForms的情况下更改DataVisualization.Chart大小
- 21. 在不刷新页面的情况下更改内容大小?
- 22. 如何在不更改输入的URL的情况下使用.htaccess重定向?
- 23. Bresenham的线算法所有情况下
- 24. 在输入参数改变的情况下运行.exe
- 25. 为什么默认情况下会在从文件输入的情况下评估?
- 26. 如何在不写入所有其他输入变量的情况下将变量传递到bash脚本
- 27. 如何在不写入空字节的情况下写入nasm?
- 28. 不能在异常情况设置resultCode为为startActivityForResult我在正常的情况下
- 29. 在不改变现有代码的情况下记录异常
- 30. 在没有创建缓冲区的情况下写入标准输出
怎么样缩写词和专有名词像地名?他们是否也应改为小写? – 2009-06-09 15:02:22