PHP включает внешний файл и делает массив - PullRequest
0 голосов
/ 24 ноября 2011

Я хочу включить внешний файл, а затем получить все содержимое, удалить единственный HTML-код на странице <br />, заменить его на , и запустить его в массив.

datafeed.php

john_23<br />
john_5<br />
john_23<br />
john_5<br />

grabber.php

<?php
// grab the url
include("http://site.com/datafeed.php");

//$lines = file('http://site.com/datafeed.php);

// loop through array, show HTML source as HTML source.
foreach ($lines as $line_num => $line) {

    // replace the <br /> with a ,
    $removeBreak = str_replace("<br />",",", $removeBreak);
    $removeBreak = htmlspecialchars($line);
    // echo $removeBreak;
}

// fill our array into string called SaleList
$SaleList = ->array("");

Я хочу загрузить php-файл из каталога сервера, получить HTML-содержимое этого файла и поместить его в пригодный для использования массив.

Это будет выглядеть как

$SaleList = -getAndCreateArray from the file above >array("");
$SaleList = ->array("john_23, john_5, john_23");

Ответы [ 3 ]

1 голос
/ 24 ноября 2011

Вот рабочая версия grabber.php:

<?php
function getSaleList($file) {
    $saleList = array();
    $handle = fopen($file, 'r');
    if (!$handle) {
        throw new RuntimeException('Unable to open ' . $file);
    }
    while (($line = fgets($handle)) !== false) {
        $matches = array();
        if (preg_match('/^(.*?)(\s*\<br\s*\/?\>\s*)?$/i', $line, $matches)) {
            $line = $matches[1];
        }
        array_push($saleList, htmlspecialchars($line));
    }
    if (!feof($handle)) {
        throw new RuntimeException('unexpected fgets() fail on file ' . $file);
    }
    fclose($handle);
    return $saleList;
}

$saleList = getSaleList('datafeed.php');

print_r($saleList);
?>

Используя регулярное выражение для поиска <br />, код может работать со многими вариантами, такими как <br>, <BR>, <BR />, <br/> и т. Д.

Вывод:

Array
(
    [0] => john_23
    [1] => john_5
    [2] => john_23
    [3] => john_5
)
1 голос
/ 24 ноября 2011

Вы, похоже, не поняли, что делает include.

Если вы хотите обработать содержимое какого-либо файла с помощью вашего PHP-кода, то include - это неправильная конструкция - вам следует использовать file ()или file_get_contents ().

т.е. используя строку кода, которую вы закомментировали в своем вопросе.

Где include - это правильная конструкция для использования .... вы никогда не должны включатьудаленные файлы напрямую - это намного НАМНОГО медленнее, чем чтение локальной файловой системы - и очень небезопасно.Бывают случаи, когда имеет смысл извлечь файл из удаленного местоположения и кэшировать его локально, хотя.

И вам НИКОГДА не следует иметь встроенный HTML-код или код PHP (html в переменных / условных выражениях PHP, и PHP определяет/ class / function / include / require в порядке) во включаемом файле.

0 голосов
/ 24 ноября 2011

Может вам нужно что-то подобное?

$file = file_get_contents('newfile.php');
echo str_replace("<br>", ",", $file);

Но я не получил то, что вы пытаетесь вставить в массив ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...