2014-07-26 2 views
0

저는 현재 비용이라는 작은 웹 응용 프로그램을 PHP 데이터베이스를 통해 mysql db에 저장할 수 있도록 작업하고 있습니다.preg_match가 정상적으로 작동하지 않습니다.

다음은 작동 방식입니다.

첫 번째 페이지에서, 지출 한 항목을 mysql db에 저장해야 할 항목 수를 입력해야합니다.

그래서 항목 수를 3으로 설정하면 다른 페이지로 리디렉션되어 항목 이름과 해당 금액을 입력하는 텍스트 상자가 제공됩니다. 저장 버튼을 클릭하여 데이터베이스에 저장하십시오.

그래서 숫자 텍스트와 숫자를 허용해야하는 숫자 글자 수를 제한하고 숫자 문자를 시작해야하며 그 다음에 점 (선택 사항)을 입력하고 숫자 문자로 끝나야하는 방법을 어떻게 제한 할 수 있습니까? .

는 예를 들어 100.8은 250.4는, 250, 300.8는 200

이 내 코드

 foreach ($amount as $digit) 
    { 
     if((!ctype_digit($digit)) || ($digit<1) || (!preg_match("/[\.]$/",$digit))) 
    { 
     echo " Only positive, numeric, non-zero digits and a dot are allowed for amount of item"; 
     exit(); 
    } 
      } 

당신이 지금 2 일되어 있기 때문에 내가이 문제를 해결 도와 주면 내가 드리겠습니다이다 나는 이걸로 싸우고있어.

답변

0

하여 작업 우측 패턴이다

"^[1-9]\\d*(\\.\\d+)?$" 

자릿수 금액 뒤에 0이 아닌 숫자를 의미하며, 임의로 적어도 하나의 숫자 뒤에 점 뒤에있다. 이다

는 $의 금액을 상정하면 코드가 있어야한다 "123.45"를 포함 : 또한

if (!preg_match("^[1-9]\\d*(\\.\\d+)?$", $amount) 
{ 
    echo " Only positive numbers are allowed for amount of item"; 
    exit(); 
} 

, 당신이해야 이중 인용 문자열에있는 모든 백 슬래시 :

"/[\\.]$/" 

시공

때문에
"/[\.]$/" 

은 문자열이

인 것을 의미합니다.
/[.]$/ 
+0

덕분에 .... 효과적이었습니다. 사용하신 d * 및 d +의 기능을 설명해주십시오. –

+0

'\ d' (' "\\ d"'따옴표로 쓰여 있음)는 임의의 숫자를 나타냅니다. 즉,'[0-9]'의 지름길입니다. 나는 0을 허용하고 싶지 않기 때문에 처음 부분에서 사용하지 않았다. 그래서 나는 [1-9]를 사용했다. '+'기호는 이전의 하나 이상을 의미하며 '*'는 이전 기호가 0 이상인 것을 의미합니다. '?'는 이전 기호 중 0 또는 하나를 의미하므로 패턴 1 점만 허용합니다. –

+0

첫 번째 사용자. 당신이 옳다고 생각하는 대답을 받아 들여야한다는 것을 알고 계셨습니까? 이 경우 수락 할 대답의 왼쪽에있는 두 개의 삼각형 사이의 숫자 아래에있는 녹색 새 아이콘을 눌러야합니다. 또한 유용한 삼각형 ("upvote")을 클릭하면 유용한 답변을 찾을 수 있고 아래쪽 삼각형 ("downvote")을 클릭하면 답을 얻을 수 있습니다. –

관련 문제