ASP到PHP。。。简化php代码

ASP到PHP。。。简化php代码,php,asp-classic,Php,Asp Classic,我正在将一些asp代码转换为php,从我在php中所做的工作来看,有没有更好的方法来简化事情,这样我就不会编写额外的代码了 asp php 似乎您想用双引号替换单引号,并将单词的第一个字母大写,您可以使用: ucwords(strtolower(str_replace("'","''", $_POST['xFirstName']))); 这将使$u POST变量中传递的每个单词的第一个字母大写,因此,如果不管xFirstName中有多少单词,都只希望第一个单词大写,则应使用ucfirst()而

我正在将一些asp代码转换为php,从我在php中所做的工作来看,有没有更好的方法来简化事情,这样我就不会编写额外的代码了

asp

php


似乎您想用双引号替换单引号,并将单词的第一个字母大写,您可以使用:

ucwords(strtolower(str_replace("'","''", $_POST['xFirstName'])));
这将使$u POST变量中传递的每个单词的第一个字母大写,因此,如果不管xFirstName中有多少单词,都只希望第一个单词大写,则应使用
ucfirst()
而不是
ucwords()

可以有效地替换为

ucfirst($xFirstName)
至于第一行,它仍然是必需的——首先使字符串全部小写。虽然我会让str_替换最后的操作,因为它可能会稍微增加字符串的长度。)所以它变得有点像

$xFirstName = str_replace("'", "''", 
    ucfirst(strtolower($_POST['xFirstName']))
);

当使用函数
ucwords
时,问题将出现在姓名
Peter O'Hara
Peter Clayton Moore
等方面,您最终会遇到
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"])));

不客气

这更适合您,您仍然需要在
ucwords()
之前使用
strtolower()
它,并且为了精确匹配原始代码,您应该使用
ucfirst()
,因为
ucwords()
会考虑单词边界,而OPs代码不会。您是对的,我进行了编辑以反映您的观点。
虽然我会让stru替换最终操作,因为它可能会增加字符串的长度。
-这是一个不错的建议,但肯定属于微优化的范畴。如果微优化不会妨碍可读性,为什么要忽略它?)ucfirst+strtolower是一个单独的习惯用法,逃避引用是另一个习惯用法——至少对我来说是这样。)同意,没有理由不这样做,但我不愿意向其他人推荐这类事情,以防它导致他们倾注数千行代码,进行数千次更改,从而获得总共10毫秒的时间。正如我所说,这是一个不错的建议,在你编辑完完整的一行之后,我认为你应该得到这个美味的+1Ah,现在我明白你的意思了。)当然,这种差别可以忽略不计——我怀疑它甚至可以达到10毫秒。)感谢您的评论和您的+1。
$xFirstName = str_replace("'", "''", 
    ucfirst(strtolower($_POST['xFirstName']))
);
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"])));