Autor Zpráva
puzzle
Profil
Ahoj potřeboval bych poradit mám dlouhý text a potřebovat bych z něj nějakým způsobem dostat nějaké potřebné věci, třeba do pole nebo nějak jinak šlo by to?
panther
Profil
puzzle:
třeba regulárem.
puzzle
Profil
můžeš napsat konkrétně ty příkazy?
GeneralDv
Profil
puzzle:
můžeš napsat konkrétně ty příkazy?
www.php.net/manual/en/ref.pcre.php
Stano
Profil
puzzle:
http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=124901#2
puzzle
Profil
Ten anglický manuál mě moc nepomože :(
Zkusím to trošku přiblížit, třeba výška 180cm jmeno blabla atd a je toho hodně a potřebuju to všechno rozdělit nějak
Problém je že to neni jakoby jenom o jedno člověku jedno jmeno ale o více ...
Louka
Profil
puzzle:
Můžeš pracovat s těmi daty, pakliže v tom najdeš nějaké pravidlo. Skript, který by přečetl text, pochopil ho a následně ti vypsat, co se dozvěděl je podle mě zatím trochu sci-fi. Lze najít pozici řetězce např. "Jméno" a uložit si 2 slova co následují (jméno a příjmení), ale musí ten text být napsán "standardně".
Stano
Profil
[#6] puzzle pošli ukážku toho textu. bez toho ti asi konkrétnejšie nebude vedieť poradiť nikto
puzzle
Profil
ukázka:

GK Mousa Da Rocha 18 0 3 0
Narozeniny 14 Kvě 2011 [18] Zkušenost 5% Odvaha 74%
Tým 1.FC Krvavý Prapor
Morálka 75% Obratnost 83%
Forma 24–8–9–9–30 Fyzička 100% Skoky 79%
Nejlepší výkon 30 Energie 0% Výkopy 70%
Celkově 56% Rychlost 5% Hrát vpřed 77%
Agresivita 13% Kontrola míče 13% Reflex 65%


a tohoto je tam moc ale porad se to opakuje s jinýma hodnotama
puzzle
Profil
Louka:
Můžeš pracovat s těmi daty, pakliže v tom najdeš nějaké pravidlo. Skript, který by přečetl text, pochopil ho a následně ti vypsat, co se dozvěděl je podle mě zatím trochu sci-fi. Lze najít pozici řetězce např. "Jméno" a uložit si 2 slova co následují (jméno a příjmení), ale musí ten text být napsán "standardně".

nevím co myslíš tím standartně, ale to by se dalo použít...
panther
Profil
puzzle:
jestli máš ta zdrojová data plně pod kontrolou a můžeš s nimi manipulovat, doporučil bych na toto použít buď DB, nebo XML.

Takto zpracovávat soubor a tahat z něj data regulárními výrazy mi jako moc dobrý nápad nepřijde. To řešení může mít dost nevýhod.
Stano
Profil
puzzle:
tak ako prvé si to rozdeľ na jednotlivých hráčov asi pomocou explode(); aj keď neviem či tam máš dáky špecifický znak medzi hráčmi. hádam hej.

z toho ti vznikne array("hrac 1", "hrac 2", ....., "hrac n");
a potom to musíš deliť ďalej.
function separate($string_before, $string_after, $content){
  $content = stristr($content, $string_before); 
  $content = stristr($content, $string_after, TRUE); 
  return trim($content);
  }

$content = "GK	Mousa Da Rocha	 18	0	3	0	
Narozeniny	14 Kvě 2011 [18]	Zkušenost	5%	Odvaha	74% 
Tým	1.FC Krvavý Prapor 
Morálka	75%	Obratnost	83% 
Forma	24–8–9–9–30	Fyzička	100%	Skoky	79% 
Nejlepší výkon	30	Energie	0%	Výkopy	70% 
Celkově	56%	Rychlost	5%	Hrát vpřed	77% 
Agresivita	13%	Kontrola míče	13%	Reflex	65% ";

//aby si dostal "14 Kvě 2011 [18]	Zkušenost	5%	Odvaha	74%"
//tak dáš:

echo separate("Narozeniny", "Tým", $content);
puzzle
Profil
Hráči nejsou odděleni žádným specifickým znakem

zdroje pod kontrolou nemám vůbec je to pomůcka pro jednu on-line hru, takže data táhám přes CTRL+C,
Louka
Profil
Navážu na funkci separate:

Udělal bych si pole $vlastnosti kde by bylo
$vlastnosti = Array("Narozeniny","Zkušenost","Odvaha","Tým","Morálka",...,"END"); // a tak dále, prostě to co chceš a nakonci END


A pak bych to prošel:
$hodnoty = Array();
$content .= "END"; // tím si zajistíš dělení až do konce

for ( $i = 0; $i < count($vlastnosti)-1; $i++ ) 
{
  $hodnoty[$i] = separate($vlastnosti[$i],$vlastnosti[$i+1],$content);
}
Stano
Profil
v tomto prípade by som to riešil asi takto:
najskôr by som

function separate($string_before, $string_after, $content){
  $content = stristr($content, $string_before); 
  $content = stristr($content, $string_after, TRUE); 
  return trim($content);
  }

$hraci = explode("Narozeniny",$content);

$vlastnosti = Array("Narozeniny","Zkušenost","Odvaha","Tým","Morálka",...,"END");
$j = 0;

foreach($hraci as $hrac){
  $hodnoty[$j]["meno"] = substr($hrac, strrpos($hrac, "%"));
  if($j != 0){
    $hrac .= "Narozeniny $hrac END";
      for ( $i = 0; $i < count($vlastnosti)-1; $i++ ) 
        {
        $hodnoty[$j-1][$vlastnosti[$i]] = separate($vlastnosti[$i],$vlastnosti[$i+1],$hrac);
        }
    }
   $j++;
  }
  

toto by mohlo fungovať
puzzle
Profil
Absolutne to nechápu :(
a navíc to nefunguje
Stano
Profil
puzzle:
a upravil si:
$vlastnosti = Array("Narozeniny","Zkušenost","Odvaha","Tým","Morálka",...,"END");

,..., tam si musíš dopísať všetky tie staty čo tam máš a ešte raz si to skopíruj. chýbala tam bodkočiarka
ukážka: http://artificium.6f.sk/skuska.php
a tie funkcie si stačí vyhľadať a to pochopíš. nič zložité to nieje.
puzzle
Profil
JJ už to funguje, ale pořád nevím jkým způsobem si přišel k tomu příkladu nevím co mám vypsat...
puzzle
Profil
No tak už jsem na to přišel ale má to problém že to vždycky to méno dalšího hráče přidá ještě k tomu prvnímu...
Stano
Profil
puzzle:
áno pridáva a dá sa to jednoducho vyriešiť. ale riešenie si vymysli sám, aby si sa aj dačo naučil.
potrebuješ spraviť presný opak tohoto  substr($hrac, strrpos($hrac, "%"));
substr("$string", cislo, cislo) - oreže string o počet znakov ktorý zadáš
strrpos("string", "znak") - vyhľadá poslednu pozíciu znaku v stringu.
substr($hrac, strrpos($hrac, "%")); - oreže v reťazci $hráč všetko pred posledným %; ty potrebuješ orezať všetko za posledným %

http://php.net/manual/en/function.substr.php - pozri si príklady a hádam to dáko zmontuješ dokopy.

ono nejdem ti tu vysvetľovať tie funkcie. bolo by to len čisté prepisovanie php.net a aj keď nevieš po anglicky tak keď si pozrieš tie príklady tak to pochopíš.
puzzle
Profil
No tak já nad tím popřemýšlím, ale ted jsem vyzkoušel tu funkci a nefunguje mi... :(
Stano
Profil
puzzle:
nj nj čo už s tebo....
$hrac = substr($hrac, 0, strrpos($hrac, "%"));
$hrac .= "END";
puzzle
Profil
Já jsem ted myslel tu tvoji funkci tu separate ta nefunguje a nefunguje k vůli tomu parametru true, pokud tobe jede tak me řekni na jakém hostingu...
Stano
Profil
puzzle:
sme sa podla mňa nepochopili. však vyššie si písal že ti to ide len to pridáva na koniec vždy jedno meno navyše. a to nemá nič spoločné s funkciou separate. to meno vyriešiš tým čo som ti poslal vyššie. mne ta funkcia funguje úplne dobre na endore.cz (http://artificium.6f.sk/skuska.php).
Tori
Profil
puzzle:
á jsem ted myslel tu tvoji funkci tu separate ta nefunguje a nefunguje k vůli tomu parametru true, pokud tobe jede tak me řekni na jakém hostingu...
Na jakémkoli hostingu s PHP 5.3.0. Pokud máte nižší, musíte to obejít kombinací substr a stripos.
puzzle
Profil
Díky snad už to zvládnu

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:

0