2017-12-21 16 views
3

$text = '26061235+1234567,A1227011';のような文字列がある場合は、 8文字より短い文字列または非数字文字を含む文字列を出力します。文字列に関連するエラーを出力するには

私の予想される出力は、1234567A1227011です。

1234567の長さは7文字です。 Aが含まれているため、 A1227011です。

これは私が書いたコードです。

$text = '26061235+1234567,A1227011'; 
    $splitted = preg_split('/[(or),\+]/', $text); 

    $splitted = array_filter($splitted); // remove any empty string 
    foreach($splitted as $str) 
    { 
     if(!is_numeric($str) || strlen($str)<=8) 
     { 
      $error=preg_replace('/\d+/','',$str); 
      echo "this $error is not fine"; 
     } 
    } 

しかし、私は、出力には、結果を取得しない

+1

罰金ではないではないのですか?私はこれが正しいことを理解していません。 'A1227011'は8です – Andreas

+0

デリミタとは何ですか?区切り記号として使用されているプラ​​スとカンマの両方が表示されます。 –

+0

@Andreas私は質問を読んだ(間違っている可能性がありますが)それは数字と8桁未満です_or_ a-zと0-9の両方を含む文字列です。 –

答えて

1
if(!is_numeric($str) || strlen($str)<=8) 
{ 
     $error=preg_replace('/\d+/','',$de); 
     echo "this $error is not fine"; 
} 

は、なぜあなたはここにpreg_replace('/\d+/','',$de);が必要なのでしょうか?なぜだけでなく:

if(!is_numeric($str) || strlen($str)<=8) 
{ 
     echo $str; 
} 
0
$text = '26061235+1234567,A1227011'; 
$splitted = preg_split('/[(or),+]/', $text); 
$splitted = array_filter($splitted); // remove any empty string 
foreach($splitted as $str) 
    { 

     if(!is_numeric($str) || strlen($str)<8) 
     { 
      $error=preg_replace('/d+/','',$str); 
       echo "this $error is not fine<br/>"; 
     } 
    } 

出力: -

この1234567は罰金ではありません

このA1227011はな長さで8まで

関連する問題