Php Anfänger braucht ein paar Hilfestellungen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
pcace
Beiträge: 231
Registriert: 28.08.2011 01:08:55

Php Anfänger braucht ein paar Hilfestellungen

Beitrag von pcace » 19.11.2015 17:20:17

Hallo,

ich habe ein Problem:Ich habe hier viele hundert Bilder, alle nummeriert. dazu habe ich eine csv datei (mit tab getrennte spalten) mit 3 spalten, eine mit einer id (nummer eines bildes) und die beiden weiteren mit x und y koordinate.

Ich möchte nun aus den vielen bildern eine große SVG Generieren. Gedacht habe ich mir, dass man das vllt. mit einem php script erledigen könnte -
- erst einlesen der csv in ein array
- dann svg header in eine neue datei schreiben
- dann für jedes elemet in dem array folgendes an die neue datei anhängen

Code: Alles auswählen

  <image x="$xkoordinateausCSV" y="yKoordinateausCSV" width="300" height="80"
     xlink:href="'$id'.jpg" />
</image>
- dann den footer.

eine SVG sieht in etwa so aus:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:ev="http://www.w3.org/2001/xml-events"
version="1.1" baseProfile="full"
width="800mm" height="600mm"
viewBox="-400 -300 800 600">
<title>Titel der Datei</title>
<desc>Beschreibung/Textalternative zum Inhalt.</desc>

<image x="20" y="20" width="300" height="80"
xlink:href="logo.png" />
</image>
</svg>

Nun geht es schon los bei den simpelsten dingen:
wie lese ich so ein array ein und gebe es wieder aus?

versucht habe ich das hier:
<?php
$csv = array_map('str_getcsv', file('features.csv'));
echo $csv[3];
?>
rückgabe ist ein "array"

nicht so recht was ich erwartet habe...

der Andere Weg war so:

Code: Alles auswählen

<?php
$row = 1;
if (($handle = fopen("features.csv", "r")) !== FALSE) {
  while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    echo "<p> $num fields in line $row: <br /></p>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";
    }
  }
  fclose($handle);
}
?>
Allerdings scheint er nicht so recht die tabulator getrennten felder zu erkennen:

das ist ein Teil der Ausgabe:
<p> 1 fields in line 180: <br /></p>
179 0 81<br />
Hat jemand eine Idee?


EDIT: ich bin einen schritt weiter:
while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) {
Damit habe ich nun die schonmal die csv ein und wieder ausgelesen ;)
Gruß

Pcace

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Php Anfänger braucht ein paar Hilfestellungen

Beitrag von thoerb » 19.11.2015 17:49:45

Ich bin da nicht fit genug, um dir eine fertige Lösung zu bieten, aber einen kleinen Tipp kann ich dir geben.

mit print_r() kannst du dir den Aufbau deines Arrays ansehen. Das hat mir schon oft geholfen.

http://php.net/manual/de/function.print-r.php

Benutzeravatar
heisenberg
Beiträge: 3473
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Php Anfänger braucht ein paar Hilfestellungen

Beitrag von heisenberg » 21.11.2015 03:02:10

Also bitte. Wenn Du das nicht hinbekommst. Ein popeliges Array zu verarbeiten...

Bemühe ein paar mal google und dann hast Du überall Beispiele rumliegen. Die Doku von http://www.php.net ist
wirklich exzellent.

Fauler Sack! :D
... unterhält sich hier gelegentlich mangels wunschgemäßer Gesprächspartner mal mit sich selbst.

Antworten