0

我正在做一个歌词网站。管理面板中有一个textarea可以插入新歌曲。我该如何做以下事情?

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

我尝试ucfirst(strtolower($str))了仅将整个单词集的第一个字母大写,因为其中有句点。我知道如何删除不必要的连字符、多余的空格和 html 标记(如果有)。我应该怎么办?usingnl2br和 replace <br/>with\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]

注意每行的首字母大写和每行末尾的 [空格]

4

2 回答 2

2

你可以这样做:

<?php
$text = "your lyrics";
$lines = explode("\n", $text);
$goodLines = array();

foreach($lines as $line)
{
    array_push($goodLines, ucfirst(strtolower($line)) . " ");
}

$goodText = implode("\n", $goodLines);
?>
于 2013-06-08T12:37:21.347 回答
1

用 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);
}
?>

这是一个证明它有效的phpfile:

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

于 2013-06-08T15:20:24.723 回答