有點驚訝,但下面...PHP的preg_match '£'
static public function VerifyAndFormatStreet(&$addrStr, $mustExist)
{
if($addrStr !== NULL)
{
$addrStr = trim($addrStr);
// SNIP
if(preg_match('/[^A-Za-z0-9 -.,]/', $addrStr))
{
printf("\t### FAIL: BAD CHARS\n");
throw new JEH_IllegalParameterException("Address contains illegal characters");
}
$addrStr = ucwords(strtolower($addrStr));
printf("PASS STRING IS NOW $addrStr\n");
}
else if($mustExist)
throw new JEH_IllegalParameterException("Address must not be empty");
}
下調用失敗,找到$street2
無效字符...
$pass = FALSE;
try { JEH_Address::Create("12 Somestreet", "Junk£", "Frlington", "", "Portsmouth", "Hampshire", "UK", "PO1 1XX"); }
catch(JEH_IllegalParameterException $e) { $pass = TRUE; }
if(!$pass) die("Was able to detect bad char!!!\n");
else printf("PASS\n");
但是,如果我改變preg_match()
函數以下函數在Create()
函數中... (將空格放在集合的末尾)
if(preg_match('/[^A-Za-z0-9-., ]/', $addrStr))
該功能起作用。
任何想法爲什麼移動字符匹配集中的空間的作品?
這就是爲什麼我傾向於始終把'-'在我的性格分組結束時,如果我想要一個文字'-'匹配,因爲這永遠不會產生字符範圍。 – ajp15243
@ ajp15243 - 我傾向於逃避任何可能被誤解的東西 – andrewsi
Urg yes!謝謝 – Jimbo