Javascript 所有大写字母均为文本。有没有办法正确修复大写的用户输入?

Javascript 所有大写字母均为文本。有没有办法正确修复大写的用户输入?,javascript,php,jquery,Javascript,Php,Jquery,当用户提交表单时,比如一个文本区域,大写锁定,我知道我们可以做一些选项来“修复”该情况,其中一些选项是: - PHP - ucfirst(mb_strtolower($str)); - CSS - text-transform: lowercase; 以及一些变体,将上述方法与其他方法相结合。这很好,但在大多数情况下,这并不能正确地确定资本化 目标不是“所有大写文本””,也不是“这是一个文本””,甚至不是最糟糕的“所有小写。甚至段落等 假设我有这段文字: “你好,我叫约翰。我是一名程序员。

当用户提交表单时,比如一个文本区域,大写锁定,我知道我们可以做一些选项来“修复”该情况,其中一些选项是:

 - PHP - ucfirst(mb_strtolower($str));
 - CSS - text-transform: lowercase;
以及一些变体,将上述方法与其他方法相结合。这很好,但在大多数情况下,这并不能正确地确定资本化

目标不是“所有大写文本””,也不是“这是一个文本””,甚至不是最糟糕的“所有小写。甚至段落等

假设我有这段文字:

“你好,我叫约翰。我是一名程序员。我在英国广播公司工作。”

可能无法正确转换此字符串(如果我错了,请告诉我):

“你好,我叫约翰。我是一名程序员。我在英国广播公司工作。”

如果这不可能,我很好。但是有一种方法可以让你有一些逻辑,不管是小写还是驼峰大小写,等等

比如:

“你好,我叫约翰。我是一名程序员。我在英国广播公司工作。”

所有小写字母,但段落的第一个字母和点后的第一个字母都可以

是否有一些jquery插件,一些php类,不管什么,我不知道,可以做到这一点

很抱歉,如果这个问题与其他一千个相关问题有重复之处,但我能找到的只是无法正确格式化案例的代码,以及许多不适合所有案例的解决方案,如:


俗话说得好,猪耳朵做不出丝绸钱包

任何能做到这一点的脚本都必须知道句子的边界、人称代词、专有名称、地名和其他各种东西。即使你让首字母缩略词适当的大写字母滑落,这也是一个巨大的可能性,必须涵盖。无论出于何种目的,这都是不切实际的,根本不可能做到


例如,如果您遇到“SMITH”一词,您是将其呈现为名称中的SMITH,还是将其呈现为作业中的SMITH?甚至史密斯,如果它恰好是某事物的首字母缩略词

我将
strtolower
字符串,然后在句点上拆分(
explode
)它,然后
trim
每个句子,然后
ucfirst
,最后用空格连接(
introde
)。

学习语言和编码多年,我可以肯定地告诉你,准确地猜测是不可能的。考虑适当的名词,例如某人或餐馆的名字。当一个用户在写他们在红砖烤炉餐厅的精彩访问时,你怎么知道“红色”这个词是用来描述建筑物的颜色还是实际名称的一部分

您的“足够接近”解决方案与您已经找到的解决方案类似,但只需确保检查帖子的内容是否有封盖,如果所有封盖似乎都被检测到,则运行重新装箱解决方案


下面是一个描述如何检测所有封口的示例。

Well。。脚本怎么会知道,
Jhon
应该以大写开头,但
programmer
不是?要大写一句话中第一个单词的第一个字母,你可以遵循这个思路-这正是我的想法,但现在是2013年,google translator做得很好,另外,还有SIRI等语音识别软件,我想,也许现在的孩子们有一些类库,一个谷歌API可以做到这一点。也许有一天会有人用这个来回答这个问题。谷歌在解决问题上的资源比你多得多。:)谷歌在不久的将来可能会有类似的产品,因为他们已经可以修复语法,有区域逻辑,还有翻译和语音API,所以系统会知道苹果是一个水果名,但也是一个公司,所以它可以分析上下文,就像他们在Gmail消息中已经做的那样。此外,到目前为止,您关于检测应用程序上限的回答可能是目前的解决方案,因为我可以警告用户这一点。非常感谢。
<?php
function ucwordsreplace($matches) {
    return ucwords(strtolower($matches[0]));
}

$original = "some UPPERCASE words GO HERE";
$fixed = preg_replace_callback('/\b[A-Z]+\b/', "ucwordsreplace", $original);

echo $fixed; // some Uppercase words Go Here