提供された短いリストで正規表現を使用するのは簡単かもしれませんが、数百または数千のレコードを処理する必要がある場合、完全に証明することは非常に困難です。
他人に影響を与えないものを使いたい。「マクドナルド」さんが「マクドナルド」を好むかどうかはどうやってわかりますか?
あなたは他の誰かのエラーを修正しています。ソースを修正できない場合は、次のようなものを使用できます。
<?php
$provided_names = array(
"SMITH",
"O'HARA",
"MCDONALD",
"JONES",
"VAN DER SLOOT",
"MACDONALD"
);
$corrected_names = array(
"O'HARA" => "O'Hara",
"MCDONALD" => "McDonald",
"VAN DER SLOOT" => "van der Sloot"
);
$email_text = array();
foreach ($provided_names as $provided_name)
{
$provided_name = !array_key_exists($provided_name, $corrected_names)
? ucwords(strtolower($provided_name))
: $corrected_names[$provided_name];
$email_text[] = "{$provided_name}, your message text.";
}
print_r($email_text);
/* output:
Array
(
[0] => Smith, your message text.
[1] => O'Hara, your message text.
[2] => McDonald, your message text.
[3] => Jones, your message text.
[4] => van der Sloot, your message text.
[5] => Macdonald, your message text.
)
*/
?>
役に立つことを願っています。