Вам было бы лучше получить к нему доступ, используя что-то вроде 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;
Вот то, что is_numeric () считает числовой строкой:
Числовые строки состоят из дополнительного знака, любого количества цифр, дополнительной десятичной части и дополнительной экспоненциальной части. Таким образом +0123.45e6 является допустимым числовым значением. Шестнадцатеричная нотация (0xFF) позволяется также, но только без знака, десятичной и экспоненциальной части.
Если Вы только хотите проверить, состоит ли строка из десятичных цифр 0-9, Вы могли бы использовать ctype_digit ().
Это для проверки ввода данных пользователем? Затем издержки использования regexp или утверждения его не содержат "x", и is_numeric () не был бы слишком много служебным.
Regex, очевидно, был бы Вашим более оптимальным вариантом, однако он действительно идет с издержками. Таким образом, это действительно зависит от Вашей ситуации и что Вы хотите сделать.
Можно также проверить использование ctype_digit()
проверять, является ли это истинное число.
Если Вы просто хотите проверить, что что-то - целое число, попробуйте это:
function isInteger($value){
return (is_numeric($value) ? intval($value) == $value : false);
}
Если Вы захотите проверить на плавания слишком затем, то это не будет работать, очевидно, :)