2016-07-16 4 views
0

PHP REGEXPHPの正規表現のプリプレグは、文句を言わない取得しよう

// Search Field: 
$e = "SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'KM0403580-70' for key 'PRIMARY'" 

// Code: 
$errorRegex = ereg("\:.([0-9]+)[a-zA-Z\s]+'([A-Z]*)'$", $e, $moError); 
echo $moError[2] . " " . $moError[1]; 

にマッチ:

  1. 1062
  2. KM0403580-70

任意のアイデアは、私が間違ってやってんですよ?それはおそらくあなたのデータ以外にも多くのことを一致しますが、私は...、今

+1

'ereg'は今しばらくは廃止され、代わりに' preg_match'を使用してください。 – Toto

答えて

1

笑これはあなたが書くしようとしている正規表現はおそらく4時間を見つけるためにしようとしてきた

^.*: ([0-9]+).* '([A-Z0-9-]+)'.*$ 
それだけで、エラーの特定のタイプからIDコードを見つけるだろうという点で、このような

何かがより安全ずっと次のようになります。

^SQLSTATE\[[0-9]+\]: Integrity constraint violation: ([0-9]+) Duplicate entry '([A-Z0-9-]+)' for key 'PRIMARY'$ 
関連する問題