我正在将一些asp代码转换成php,从我在php中所做的事情来看,有没有更好的方法来简化事情,这样我就不需要写额外的代码了?
asp
xFirstName = LCase(Replace(request.form("xFirstName"), "'", "''"))
xFirstName = UCase(Left(xFirstName,1))& Mid(xFirstName,2)php
$xFirstName = strtolower(str_replace("'","''",$_POST["xFirstName"]));
$xFirstName = strtoupper(substr($xFirstName,0,1)).substr($xFirstName,1);发布于 2012-05-03 23:47:01
看起来你想用双引号代替单引号,并将单词的第一个字母大写,你可以这样做:
ucwords(strtolower(str_replace("'","''", $_POST['xFirstName'])));这将使传递到$_POST变量中的每个单词的第一个字母大写,因此,如果您只希望第一个单词大写,而不管xFirstName中有多少个单词,则应该使用ucfirst()而不是ucwords()。
发布于 2012-05-03 23:52:44
strtoupper(substr($xFirstName,0,1)).substr($xFirstName,1);可以有效地替换为
ucfirst($xFirstName)至于第一行,它仍然是必需的-首先将字符串全部小写。尽管我会将str_replace作为最后的操作,因为它可能会稍微增加字符串的长度。)所以它变成了类似于..。
$xFirstName = str_replace("'", "''",
ucfirst(strtolower($_POST['xFirstName']))
);发布于 2012-05-04 00:00:48
问题将出在名称、Peter O'Hara或Peter Clayton-Moore等方面,当使用函数ucwords时,您最终会得到Peter O'hara或Peter Clayton-moore。
更好的解决方案是编写自己的函数,如下所示:
public function my_ucwords($name) {
$name = ucwords(str_replace('\'', '\' ', str_replace('-', '- ', $name)));
return str_replace('\' ', '\'', str_replace('- ', '-', $name));
}然后继续执行以下操作:
$xFirstName = str_replace("'","''", my_ucwords(mb_strtolower($_POST["xFirstName"])));不客气!
https://stackoverflow.com/questions/10434739
复制相似问题