Разобрать CSV-файл ссылок на массив php, подать эти ссылки на simplehtmldom - PullRequest
0 голосов
/ 22 января 2011

У меня есть php-код, который будет считывать и анализировать csv-файлы в многострочный массив, что мне нужно сделать дальше, это взять этот массив и позволить simplehtmldom запустить сканер, чтобы получить информацию об акциях некоторых компаний.

Php-код для синтаксического анализатора CSV:

<code>$arrCSV = array();  
// Opening up the CSV file  
if (($handle = fopen("NASDAQ.csv", "r")) !==FALSE) {  
// Set the parent array key to 0  
$key = 0;  
// While there is data available loop through unlimited times (0) using separator (,)
while (($data = fgetcsv($handle, 0, ",")) !==FALSE) {  
   // Count the total keys in each row $data is the variable for each line of the array
$c = count($data);  
   //Populate the array  
   for ($x=0;$x<$c;$x++) {  
   $arrCSV[$key][$x] = $data[$x];  
   }  
   $key++;  
} // end while  
// Close the CSV file  
fclose($handle);  
} // end if  
echo "<pre>";  
echo print_r($arrCSV);  
echo "
";

Это прекрасно работает и анализирует массив построчно, $ data - переменная для каждой строки. Что мне нужносделать сейчас, чтобы заставить это быть прочитанным через simplehtmldom, где он ломается, я смотрю на использование этого кода или что-то очень похожее, я довольно неопытен в этом, но думаю, мне понадобится оператор foreach где-нибудь вдоль строки.

Это код simplehtmldom

$html = file_get_html($data);  
$html->find('div[class="detailsDataContainerLt"]');  
$tickerdetails = ("$es[0]");  
$FileHandle2 = fopen($data, 'w') or die("can't open file");  
fwrite($FileHandle2, $tickerdetails);  
fclose($FileHandle2);  
fclose($handle);  

Итак, мой вопрос: как мне заставить их обоих работать вместе, я несколько раз проверил страницу справочника simplehtmldom и нашел ее немного размытой в этой областиприведенный выше код simplehtmldom - это то, что я использую в другой функции, но с помощью ссылки directclty, поэтому я знаю, что она работает.

в отношении Marолово

1 Ответ

0 голосов
/ 22 января 2011

Ваш цикл может быть уменьшен до (да, это то же самое):

while ($data = fgetcsv($handle, 0, ',')) {
    $arrCSV[] = $data;
}

Использование SimpleXML вместо SimpleDom (поскольку это стандартный PHP):

foreach ($arrCSV as $row) {
    $xml = simplexml_load_file($row[0]); // Change 0 to the index of the url
    $result = $xml->xpath('//div[contains(concat(" ", @class, " "), " detailsDataContainerLt")]');
    if ($result->length > 0) {
        $file = fopen($row[1], '2'); // Change 1 to the filename you want to write to
        if ($file) {
            fwrite($file, (string) $result->item(0));
            fclose($file);
        }
    }
}

это должно сделать, если я правильно понял ...

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