2015-04-30 63 views
-1

我無法訪問表單,因此我無法使用客戶端驗證。我需要使用PHP代碼來檢查數組中的每個值,並確保每個條目都具有特定的格式。所有條目都需要以一個數字(例如1,04,10,55,9069)開頭,後跟一個下劃線和多個字母數字。有效條目的如何確保數組中的所有值都包含數字和下劃線?

實例:

5_lAb-3004-012

015_36hl_Dm

99_h3毫米-01

1_sdfd

無效條目的

實例:

kk_12-04o

12-63-LL

_he-666-AA

0_jjdjd

那麼什麼是代碼來檢查陣列和回聲一個錯誤,如果任何的條目/值是的不正確的格式?

代碼我試着:

// START - My add-on for checking for an underscore in the parts field. 
      $parts = $hForm->getValue("parts"); 

      if (is_array($parts) && !empty($parts)) { 
       $partsim=implode(" ",$parts); 
       if (!preg_match('/_/', $partsim)) { 
       $hForm->setError("parts", "Missing Qty!"); 
       } 
      } 
// END - My add-on for checking for an underscore in the parts field. 

只有上面的代碼檢查下劃線整個陣列。我需要代碼來檢查數組中的每個值,並且如果在任何數組值中都找到了我描述的正則表達式,請回顯一個錯誤。

+3

這不是一個代碼交付平臺。你如何在客戶端做到這一點?你有什麼嘗試?這尖叫正則表達式。 – SBI

+0

@SBI當我提到客戶端時,我在表單頁面上使用JavaScript進行驗證,之後表單由PHP處理。我意識到正則表達式是需要的,但是我嘗試的所有東西都失敗我添加了迄今爲止的內容,但這不是我所需要的。我谷歌搜索了幾個小時,但仍然不能放在一起:-( – Jeff

回答

0

感謝所有促成:-)

的例子被提供給了我一個很好的起點,正則表達式的,但他們不工作例如我在原始文章中列出的有效/無效條目。另外,沒有人提供關於如何檢查數組中每個值的任何信息。

不管怎樣,下面是我想出了工作代碼:

// START - My add-on that checks for qty prefix in the parts field. 
$parts = $hForm->getValue("parts"); 
if (is_array($parts) && !empty($parts)) { 
    $missingQty = false; 
    foreach ($parts as $part) { 
     if (!preg_match("/^\d+_+.*$/", $part)) { 
      $missingQty = true; 
      break; 
     } 
    } 
    if ($missingQty) { 
     $hForm->setError("parts", "Missing Qty!"); 
    } 
} 
// END - My add-on that checks for qty prefix in the parts field. 
0

您可以像

if (preg_match("/^[0-9][_]+\w*$/", "0_test", $match)) { 
    echo 'match'; 
} 
else { 
    echo 'not match'; 
} 

創建正則表達式如果result_array具有價值,這意味着它是正確的進入其他無效的條目。

+0

你輸了,至少,一個右括號:) – splash58

+0

你忘了一個閉括號,你的正則表達式不處理結束字母字符。也許你在明星面前忘記了「\ w」? –

+0

這將肯定工作。 –

1

正如SBI所說,它尖叫正則表達式。

你需要使用:

preg_match ("/^\d+_\w+$/", $array_string_element) 

說明:

開始與多家

^\d+ 

由下劃線後

_ 

那麼更多的字母數字

\w+$ 
+0

非常有幫助。感謝您解釋每個部分。 – Jeff

相關問題