preg_match() - Ausdruck für MySQL-Error?

unrealzero_php

Erfahrenes Mitglied
Hallo zusammen

Wie kann ich aus einem MySQL-Error die Datensatz-Nr. sowie den Feldnamen herausfiltern?

Fehlermeldung:

Duplicate entry '9844531' for key 'item_number'

Mit substr und stripos funktioniert es, aber es muss doch eine bessere Lösung mit preg_match geben?

Kann mir jemand sagen wie die Mustersuche aussehen muss?

PHP:
$str = "Duplicate entry '9844531' for key 'item_number'";
preg_match('/mustersuche/', $str, $match);

echo $match[0] . ' ' . $match[1];
 
getestet und Code erstellt mit http://www.regex-tester.de/regex.html

PHP:
<?php
error_reporting(E_ALL);

// Text bzw. String der durchsucht werden soll 
$string = <<<EOF
Duplicate entry '9844531' for key 'item_number'
EOF;

// das Suchmuster mit Delimiter und Modifer (falls vorhanden) 
$pattern = '/Duplicate entry '([[:digit:]]+)' for key '([[:alnum:]_-]+)'/';

// RegEx mit preg_match() auswerten 
preg_match($pattern, $string, $array);

// formatierte Ausgabe 
echo '<pre>', print_r($array, true), '</pre>';

?>

ergibt

Code:
Array
(
    [0] => Duplicate entry '9844531' for key 'item_number'
    [1] => 9844531
    [2] => item_number
)
 
Zurück