我在Regular Expressions上有點生疏,所以很感謝幫助。對於當前的項目,我需要對一些用戶輸入進行消毒,並將縮略的英國郡名轉換爲冗長的對應名稱(例如Lincs => Lincolnshire)。PHP RegularExpression用字符串開頭替換單詞,後面跟着空格
我寫了一個函數來處理這裏面使用正則表達式,因爲我們只希望,更換當縮寫或者在字符串的開頭,或用逗號或空格,和 preceeded接着是空格(或字符串終止)。
因此,考慮的Lincs
的例子中,如下替換應該發生:
Boston, Lincs
=>Boston, Lincolnshire
(因爲Lincs
由空格preceeded)
Lincs
=>Lincolnshire
(因爲Lincs
是在字符串的開始)
Test, Lincsto
=>Test, Lincsto
因爲Lincs
具有其他字符以下)
這裏S中的函數是什麼樣子現在:
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
。任何人都可以解釋正確的RegExp以符合上面列出的要求,或者建議爲什麼這個不起作用?
謝謝,這似乎是最乾淨的解決方案,並且運作良好。 – BenM
@BenM:它可能適用於你,但'\ b'(單詞邊界)與你在你提出的問題中提出的要求不符。 – anubhava
@anubhava請解釋。 –