私は正規表現に少し慣れていないので、助けていただければ幸いです。現在のプロジェクトでは、一部のユーザー入力をサニタイズし、短縮された英国の郡名を冗長な対応する名前に変換する必要があります (たとえば、Lincs => Lincolnshire)。
省略形が文字列の先頭にあるか、コンマまたは空白が前にあり、その後に空白が続く場合にのみ置換を行いたいため、正規表現を使用してこれを処理する関数を作成しました (または文字列終了)。
したがって、 の例を考えるとLincs、次の置換が発生するはずです。
Boston, Lincs=> Boston, Lincolnshire(Lincs空白が前にあるため)
Lincs=> Lincolnshire(Lincs文字列の先頭にあるため)
Test, Lincsto=>他の文字が後に続くため)Test, LincstoLincs
現在の関数は次のようになります。
function fullCounties()
{
$replacements = array(
'lincs' => 'Lincolnshire'
);
$new = $_REQUEST['place'];
foreach($replacements as $find => $replace)
{
$new = preg_replace('/(^|\W)'.$find.'([\W\d])/', $replace, $new);
}
echo $new;
}
しかし、これ Boston, Lincsは期待される ではなく、単純に を返しますBoston, Lincolnshire。上記の要件に一致する正しい正規表現を説明したり、これが機能しない理由を提案したりできますか?