Во-первых, если у вас есть шанс изменить эту структуру базы данных, сделайте это.Наличие единого столбца с двумя совершенно разными значениями будет усложнять вашу жизнь на протяжении всего срока службы приложения.Либо поместите все возможные значения в ссылочную таблицу и всегда сохраняйте location_id
, либо используйте два столбца, допускающих значение NULL, один location_id
, а другой location_free_text
, с ограничением, что каждая строка имеет один или другой (а не оба).
Однако, если вы не можете этого сделать, в PHP вам нужна функция ctype_digit
:
Проверяет, все ли символыв предоставленной строке текст числовой.
Таким образом, он вернет true
для '123'
, но false
для 'abc'
или '-1.2'
.
Обратите внимание, что произойдет ошибка, если будет дано что-то отличное отстрока, поэтому вам часто нужно «приводить» аргумент с помощью (string)
, чтобы убедиться, что он:
if ( ctype_digit((string)$your_value) ) {
// It looks like an ID
} else {
// It's some other string
}