WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Någon som är bra på excel/access? (https://www.wn.se/forum/showthread.php?t=5872)

Nick - AGAIG 2005-02-02 03:44

Tjena,

Jag har ett par text filer där informationen slutligen skall till access. Detta är företags info. Problemet är att all text ligger i samma rad, typ 6-8 rader per företag. I det stora ser det ut så här rakt över:
2. Micanor A.S.
Address:P.O.Box 6611, Roedeloekka, (Sinsenveien 11), N-0502 Oslo, Norway
Phone:(47) 22809700
Fax:(47) 22809701
E-mail:[email protected]
Contact:Mr Dag Fylling, Manager


3. Snorre AS
Address:Nordre Langarinden 7, N-5131 Nyborg-Bergen, Norway
Phone:(47) 55-531890
Fax:(47) 55-192990
Contact:Mr Egil Hundven, Managing Director

Jag har problem att konvertera detta till kollumner. 2 kollumner är inga problem men vad jag vill ha är en kollumn för adress, en för Phone, en för Fax, etc,. En kille jag träffat här på WN har försökt bygga en PHP fil men vi är inte riktigt framme ännu. http://jozo.mine.nu/txt/ (klipp och klistar ovan text). Är det någon som vet om detta är möjligt.

Niclas

PeterM 2005-02-02 06:44

Allt är möjligt. :)

Mindre-än-femminuters-hack i PHP. Skapa en stack med standardvärden, kör över standardvärden med riktiga värden, spara stacken vid nytt företag, nollställ stacken. Resultatet blir enkel tabseparerad text som borde gå att importera enkelt till valfri databas.

Kod:

<?php
$data = file_get_contents("data.txt");
$data = str_replace("\r", "", $data);
$rows = explode("\n", $data);

$processed = array();
$save = array('Company' => "", 'Address' => "", 'Phone' => "", 'Fax' => "", 'E-mail' => "", 'Contact' => "");
foreach($rows as $row) {

        if(strlen($row) != 0) {

 if(preg_match("/^([0-9]+\. )/", $row)) {
        if($save['Company'] != "") $processed[] = $save;
        $save = array('Company' => "", 'Address' => "", 'Phone' => "", 'Fax' => "", 'E-mail' => "", 'Contact' => "");

        list($n, $value) = explode(". ", $row, 2);
        $save['Company'] = $value;
 } else {
        list($field, $value) = explode(":", $row, 2);
        $save[$field] = $value;
 }

        }

}
if($save['Company'] != "") $processed[] = $save;

echo "<pre>\n";
echo "Company\tAddress\tPhone\tFax\tE-mail\tContact\n";
foreach($processed as $company) echo implode("\t", $company) . "\n";
echo "</pre>\n";
?>

Koden utgår dock ifrån att det finns tomma rader mellan varje "företagsblock". Gör det inte det så stupar den. Fungerar det inte så får ni kanske ideér i alla fall, men vill ni slippa anstränga er så kan ni skicka hela rasket till mig (skicka PM) så fixar jag det på en fikarast. :)


Alla tider är GMT +2. Klockan är nu 03:46.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson