0

私はいくつかの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);
4

3 に答える 3

1
strtoupper(substr($xFirstName,0,1)).substr($xFirstName,1);

効果的に置き換えることができます

ucfirst($xFirstName)

最初の行に関しては、文字列を最初にすべて小文字にする必要があります。str_replace を最終操作にしますが、文字列の長さが多少長くなる可能性があるためです。) それで、次のようになります...

$xFirstName = str_replace("'", "''", 
    ucfirst(strtolower($_POST['xFirstName']))
);
于 2012-05-03T15:52:43.627 に答える
1

一重引用符を二重引用符に置き換え、単語の最初の文字を大文字にしたいようです。これは次のように行うことができます。

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

これにより、$_POST 変数に渡される各単語の最初の文字が大文字になるため、xFirstName に含まれる単語の数に関係なく最初の単語のみを大文字にする場合は、ucfirst()代わりに を使用する必要がありucwords()ます。

于 2012-05-03T15:47:00.930 に答える
0

問題は、関数を使用するときの名前などにあります。Peter O'Haraまたはになります。Peter Clayton-MooreucwordsPeter O'haraPeter 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"])));

どういたしまして!

于 2012-05-03T16:00:47.753 に答える