Autor Zpráva
Sairus88
Profil *
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
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 *
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
mozna ukladat to na web pres XML by bylo snazsi a urcite prehlednejsi
ninja
Profil
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
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 *
Oki díky kluci, použiju tedy to od pana Tvrdíky.
Sairus88
Profil *
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 *
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!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: