Autor | Zpráva | ||
---|---|---|---|
Sairus88 Profil * |
#1 · Zasláno: 19. 2. 2008, 22:28:29
Ahoj kluci, rád bych vás poprosil o malej skriptík. Protože se v PHP moc neorientuju, tak hledám dobrou duši zde. Kdyby se někdo ochotný našel, byl bych moc vděčný. Díky.
Mám soubor explain.dat, který je neustále doplňován. Potřeboval bych z něj vytvořit výpis rovnou do tabulky. afaik = Sairus88!~sairusnet@Sairus88.users.quakenet.org-#testik As Far As I Know aka = Sairus88!~sairusnet@Sairus88.users.quakenet.org-#testik Also Known As asap = Sairus88!~sairusnet@Sairus88.users.quakenet.org-#testik As Soon As Possible a potřeboval bych asi takovýhle výstup <tr><td>afaik</td><td>As Far As I Know</td><td>Sairus88</td></tr> <tr><td>aka</td><td>Also Known As</td><td>Sairus88</td></tr> <tr><td>asap</td><td>As Soon As Possible</td><td>Sairus88</td></tr> Díky všem. |
||
Jan Tvrdík Profil |
#2 · Zasláno: 19. 2. 2008, 23:24:27
Sairus88
Řekl bych, že problémem je už ta struktura, jak to ukládáš - lepší by byla datatáze, ale když už do ukládáš do souboru, tak použít nějaky rozumný separátor :P Napadají mě 2 možnosti, jak to řešit: 1. strpos + substr 2. regulární výrazy :) <?php $s = "afaik = Sairus88!~sairusnet@Sairus88.users.quakenet.org-#testik As Far As I Know"; preg_match("/^[^=]+/",$s,$zkratka); preg_match("/= (.+)!~/",$s,$jmeno); preg_match("/#(.+)/",$s,$vyznam); $pole[] = array($zkratka[0],$jmeno[1],$vyznam[1]); echo "<table>\n"; foreach($pole as $polozky) { echo "<tr>\n"; foreach($polozky as $polozka) { echo "<td>$polozka</td>\n"; } echo "</tr>\n"; } echo "</table>\n"; ?> |
||
Sairus88 Profil * |
#3 · Zasláno: 20. 2. 2008, 01:04:02
Díkes za odpověď moc tomu nerozumim, ale zkusim trochu vysvětlit muj problém. Mám soubor explain.dat(průběžně editován) ten se 1x za den uploadne na hostingové ftp. Jedná se o soubor který slouží jako databáze pro irc bota, který má výše uvedenou strukturu. Potřebuju to ale vypisovat někde na webu. Nevím jaké řešení je nejlepší, jestli to nějak první natáhnout do mysql a pak s tim dál pracovat, nebo to rovnou parsovat z toho souboru. Kdyžtak poraďte, ale potřeboval bych celý php kód díky.
|
||
Kalby Profil |
#4 · Zasláno: 20. 2. 2008, 09:50:47
mozna ukladat to na web pres XML by bylo snazsi a urcite prehlednejsi
|
||
ninja Profil |
#5 · Zasláno: 20. 2. 2008, 10:24:57
Kalby: Jan Tvrdik ti ukazal cestu.
1. Nactes soubor po radcich. 2. Rozsekas si kazdy radek na jednotlive casti. 3. Zobrazis. Co na to nechapes? |
||
Kalby Profil |
#6 · Zasláno: 20. 2. 2008, 10:58:54
ja to reseni chapu a navic jsem se na nic neptal ja ale Sairus88
to XML beru zpet je to asi zbytecny kdyz to mas v tom souboru kterej ma takhle jednoduchou strukturu |
||
Sairus88 Profil * |
#7 · Zasláno: 20. 2. 2008, 11:42:50
Oki díky kluci, použiju tedy to od pana Tvrdíky.
|
||
Sairus88 Profil * |
#8 · Zasláno: 21. 2. 2008, 00:53:03
Díky tak jsem se to snažil rozběhat a došel jsem asi k následujícímu výsledku.
<?php $file = fopen("explain.dat", "r") or exit("Unable to open file!"); //Output a line of the file until the end is reached while(!feof($file)) { $s = fgets($file); preg_match("/^[^=]+/",$s,$zkratka); preg_match("/= (.+)!~/",$s,$jmeno); preg_match("/-#(.+)/",$s,$vyznam); preg_match("/-#(.+)/",$s,$vyznam); $pole[] = array($zkratka[0],$vyznam[1], $jmeno[1], $kanal[1]); } fclose($file); foreach($pole as $polozky) { echo "<tr>\n"; foreach($polozky as $polozka) { echo "<td>$polozka</td>\n"; } echo "</tr>\n"; } ?> potřeboval bych ještě poradit, jak upravit následující dva řádky preg_match("/-#(.+)/",$s,$vyznam); preg_match("/-#(.+)/",$s,$vyznam); tak aby mi do proměnné $vyznam ukládal vše za tímto "#nejakytext" a do proměnné kanál ukádal "#nejakytext" (může být včetně #) zde je soubor ze kterého parsuji http://lolitka.wz.cz/explain/lol.php |
||
Sairus88 Profil * |
#9 · Zasláno: 21. 2. 2008, 01:17:20
Jinak u toho druhého řádku má být proměnná $kanal misto $vyznam, s výše uvedeným skriptem dostávám následující výpis http://lolitka.wz.cz/explain/explain.php
Zkoušel jsem si různě hrát s preg_match ale moc se mi nedařilo. Prosím ještě o pomoc. Díky! |
||
Časová prodleva: 16 let
|
0