Reputation: 1253
I'm working on a lyrics website. There is a textarea
in the admin panel to inset a new song. How can I do the followings?
I tried ucfirst(strtolower($str))
which only Capitalize the first letter of the whole word set since there are on periods in it. I know how to remove unnecessary hyphens, extra spaces, and html tags if any. What should I do? using nl2br
and replacing <br/>
with \n
would do everything but capitalizing every new line.
EDIT:
<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>";
?>
EDIT 2
Sample text a user enters in a textarea:
Sithsoi asdigoisad
aASDF asdgdguh asudhg
sadg asdg AAFA ASFA
The desired output :
Sithsoi asdigoisad[sapce]
Aasdf asdgdguh asudhg[sapce]
Sadg asdg aafa asfa[sapce]
Note the capitalized first letter of each line and the [space] at the end of each line
Upvotes: 0
Views: 614
Reputation: 8682
Simplified with 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);
}
?>
Here's a phpfidle that proves it works:
http://phpfiddle.org/main/code/trr-dgu
Upvotes: 1
Reputation: 1274
You could do this:
<?php
$text = "your lyrics";
$lines = explode("\n", $text);
$goodLines = array();
foreach($lines as $line)
{
array_push($goodLines, ucfirst(strtolower($line)) . " ");
}
$goodText = implode("\n", $goodLines);
?>
Upvotes: 2