我正在写一个歌词网站。管理面板中有一个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
用户在textarea中输入的示例文本:
Sithsoi asdigoisad
aASDF asdgdguh asudhg
sadg asdg AAFA ASFA
所需的输出:
Sithsoi asdigoisad[sapce]
Aasdf asdgdguh asudhg[sapce]
Sadg asdg aafa asfa[sapce]
注意每行的大写首字母和每行末尾的[空格]
答案 0 :(得分: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);
?>
答案 1 :(得分: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);
}
?>
这是一个证明它可行的phpfidle: