Загрузка удаленной xml страницы с file_get_contents ()

Один из вариантов - извлечь все числа и преобразовать их в матрицу, а затем выполнить расчет.

mat <- stringr::str_extract_all(df$H, "\\d+", simplify = TRUE)

as.numeric(mat[, 1]) * 30.48 + as.numeric(mat[, 2]) * 2.54
#[1] 187.96 177.80 165.10 154.94 165.10 162.56

где mat -

#     [,1] [,2]
#[1,] "6"  "2" 
#[2,] "5"  "10"
#[3,] "5"  "5" 
#[4,] "5"  "1" 
#[5,] "5"  "5" 
#[6,] "5"  "4" 

Первый столбец - это футы, а второй - дюймы.


И просто для собственного любопытства я хотел решить эту проблему в базе R

sapply(strsplit(sub("(\\d+)'(\\d+).*", "\\1-\\2", df$H), "-"), function(x) 
       as.numeric(x[1]) * 30.48 + as.numeric(x[2]) * 2.54)

#[1] 187.96 177.80 165.10 154.94 165.10 162.56

Это следует аналогичной логике, которая извлекает 2 числа из строки, используя sub, разделяя их используя strsplit, а затем для каждого из них преобразовать его в числовой и выполнить расчет.

12
задан Seb 29 March 2009 в 20:31
поделиться

2 ответа

У Вас должен быть набор allow_url_fopen в Вашем сервере для этого для работы.

Если Вы не делаете, то можно использовать эту функцию в качестве замены:

<?php
function curl_get_file_contents($URL)
    {
        $c = curl_init();
        curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($c, CURLOPT_URL, $URL);
        $contents = curl_exec($c);
        curl_close($c);

        if ($contents) return $contents;
            else return FALSE;
    }
?>

Одолженный отсюда.

15
ответ дан 2 December 2019 в 05:15
поделиться

Это кажется нечетным. file_get_contents () возвращают какие-либо допустимые данные для других сайтов (не только XML)? URL может только использоваться в качестве параметра имени файла, если fopen-обертки были включены (который они по умолчанию).

Я предполагаю, что Вы собираетесь обработать полученный XML позже - затем необходимо смочь загрузить его в SimpleXml непосредственно с помощью simplexml_load _file ().

try {
   $xml = simplexml_load_file('http://www.test.com/foo.xml');
   print_r($xml);
} ...

Я рекомендую использовать SimpleXML для чтения XML-файлов, это очень просто в использовании.

14
ответ дан 2 December 2019 в 05:15
поделиться
Другие вопросы по тегам:

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