如何将每一行转换成句子大小写


How to convert to sentence case each new line?

我在一个歌词网站工作。在管理面板中有一个textarea,用于插入新歌。我该如何做以下的事情?

  • 每行首字母大写
  • 在每行末尾添加一个空格

我尝试了ucfirst(strtolower($str)),它只大写整个单词集的第一个字母,因为其中没有句号。我知道如何删除不必要的连字符,额外的空格和html标签,如果有的话。我该怎么办?使用nl2br并将<br/>替换为'n可以做任何事情,但每个新行都要大写。


编辑:

<style>
    textarea { width:200px; height:300px; }
</style>
<form action="/t" method="post">
    <textarea name="txt"><?php echo $_POST["txt"]; ?></textarea>
    <input type="submit" value="OK"/>
    <input type="reset" value="reset"/>
</form>
<?php
$text = $_POST["txt"];
$lines = explode("'n", $text);
foreach($lines as $line)
{
    $line = ucfirst(strtolower($line)) . " ";
}
$goodtext = implode("'n", $lines);
echo "<textarea>$goodtext</textarea>";
?>

编辑2

用户在文本区输入的示例文本:

Sithsoi asdigoisad
aASDF asdgdguh asudhg
sadg asdg AAFA ASFA

期望输出:

Sithsoi asdigoisad[sapce]
Aasdf asdgdguh asudhg[sapce]
Sadg asdg aafa asfa[sapce]

注意每行首字母大写,每行末尾有[空格]

你可以这样做:

<?php
$text = "your lyrics";
$lines = explode("'n", $text);
$goodLines = array();
foreach($lines as $line)
{
    array_push($goodLines, ucfirst(strtolower($line)) . " ");
}
$goodText = implode("'n", $goodLines);
?>

简化为array_map():

<?php
if(isset($_POST['txt'])) {
    $text = $_POST["txt"]; 
    $text = str_replace("'r'n", "'n", $text);
    $lines = explode("'n", $text); 
    $goodLines = array_map('ucfirst', array_map('strtolower', $lines)); 
    $goodText = implode(" 'n", $goodLines); 
    echo nl2br($goodText);
}
?>

下面是证明它有效的php文件:

http://phpfiddle.org/main/code/trr-dgu