is_numeric или числовой preg_match?

Вам было бы лучше получить к нему доступ, используя что-то вроде SimpleXML и XPath. Есть по крайней мере два способа сделать это, оба здесь полагаются на использование XPath, но вы должны использовать пространства имен (бит ya:), чтобы гарантировать, что вы получите правильный элемент. Поскольку XPath возвращает список совпадений, я просто использую [0], чтобы получить первое, если есть несколько, вы можете использовать цикл ...

$test = file_get_contents("data.xml");
$xml = simplexml_load_string($test);

// Version 1
// Fetch the ya:created element
$created = $xml->xpath("//ya:created")[0];
// Extract the attributes and print the date
echo $created[0]->attributes("http://purl.org/dc/elements/1.1/")->date;

// Version 2
// Extract the dd:date attribute (using the @)
$createdDate = $xml->xpath("//ya:created/@dc:date")[0];
echo $createdDate;

Забыл сказать - если вы хотите использовать эти поля для базы данных и т. Д., Вам может потребоваться привести их к строке, чтобы убедиться, что они преобразованы ...

$date = (string)$createdDate;
5
задан 13 January 2009 в 04:33
поделиться

5 ответов

Вот то, что is_numeric () считает числовой строкой:

Числовые строки состоят из дополнительного знака, любого количества цифр, дополнительной десятичной части и дополнительной экспоненциальной части. Таким образом +0123.45e6 является допустимым числовым значением. Шестнадцатеричная нотация (0xFF) позволяется также, но только без знака, десятичной и экспоненциальной части.

Если Вы только хотите проверить, состоит ли строка из десятичных цифр 0-9, Вы могли бы использовать ctype_digit ().

12
ответ дан 18 December 2019 в 13:20
поделиться

Это для проверки ввода данных пользователем? Затем издержки использования regexp или утверждения его не содержат "x", и is_numeric () не был бы слишком много служебным.

0
ответ дан 18 December 2019 в 13:20
поделиться

Regex, очевидно, был бы Вашим более оптимальным вариантом, однако он действительно идет с издержками. Таким образом, это действительно зависит от Вашей ситуации и что Вы хотите сделать.

0
ответ дан 18 December 2019 в 13:20
поделиться

Можно также проверить использование ctype_digit() проверять, является ли это истинное число.

2
ответ дан 18 December 2019 в 13:20
поделиться

Если Вы просто хотите проверить, что что-то - целое число, попробуйте это:

function isInteger($value){
    return (is_numeric($value) ? intval($value) == $value : false);
}

Если Вы захотите проверить на плавания слишком затем, то это не будет работать, очевидно, :)

0
ответ дан 18 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: