Autor Zpráva
Blizar
Profil *
Zdravím,
potřeboval bych poradit jak vyřešit problém s tím že explode z řádku 1 a 2 se mi tlučou. Script funguje, ale řádek 2 je závislý na řádku 1 a to já nechci. Potřebuji aby Řádek 2 operoval s proměnnou nezávisle na Řádku 1. Snažil jsem se to všemožně dát do závorek tak aby řádek 1 neovlivňoval řádek 2, ale prostě ne a ne na to přijít jak to udělat. Nevíte mi nějak poradit? Děkuji, tady je zdroják:


// Přenos každého řádku z textarea do proměnné
List ($r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10) = Explode ("\n", $text);

// Řádek 1
List ($s1, $s2, $s3, $s4, $s5, $s6, $s7, $s8, $s9, $s10) = Explode (" ", $r1);
echo "<b>Řádek 1</b>1. ($s1), 2. ($s2), 3. ($s3), 4. ($s4), 5. ($s5), 6. ($s6), 7. ($s7), 8. ($s8), 9. ($s9), 10. ($s10)<br>";
$datum1 = $s1;
$cas1 = $s2;
if ($s3 != "Něco"){
$mesto1 = "$s5"." $s6";
}else{
$mesto1 = "$s7"." $s8";
}

//Řádek 2
List ($s11, $s22, $s33, $s44, $s55, $s66, $s77, $s88, $s99, $s1010) = Explode (" ", $r2);
$datum2 = $s11;
$cas2 = $s22;
if ($s3 == "Něco"){
$mesto2 = "$s55"." $s66";
}else{
$mesto2 = "$s66"." $s77";
nightfish
Profil
sice vůbec nerozumím, o čem to píšeš, ale místo
if ($s3 == "Něco"){
u //Řádek 2
by mělo být spíš
if ($s33 == "Něco") ...

(názorná ukázka, jak nevhodné pojmenování proměnných přidělává problémy)
BetaCam
Profil
nightfish
(názorná ukázka, jak nevhodné pojmenování proměnných přidělává problémy)

No mě celý ten kód přijde tak trochu jako science fiction. Popravdě by mě moc zajímalo k čemu sou dobré takovéto krkolomné konstrukce a jaký je vlastně účel ke kterému by měl tento kód sloužit.
YoSarin
Profil
Už to List( ... ) samotné mi přijde naprosto totálně zbytečné - proč nepoužít pole?
pak by to vypadalo cca takhle:
$radky = explode("\n", $text);
$prvniRadek = explode(" ", $radky[0]);
echo "<b>Řádek 1</b>: ";
foreach ($prvniRadek as $place => $slovo) {
    echo $place . ". " . $slovo . " ";
}
$prvniDatum = $prvniRadek[0];
$prvniCas = $prvniRadek[1];
if ($prvniRadek[2] != "něco") {
    $prvniMesto = $prvniRadek[4] .  " " . $prvniRadek[5];
} else {
    $prvniMesto = $prvniRadek[6] .  " " . $prvniRadek[7];
}
 // a obdobně řádek 2...
Blizar
Profil *
nightfish: díky za chybu, jsem se asi upsal :| Bohužel chyba je tam stále a to ta, že když kód dojde k //Řádku 2 a má provést následující proces else{
$mesto2 = "$s66"." $s77";}
tak do proměnné $mesto2 se mi zapíše "$s55"."$s66" místo "$s66"." $s77"
Podotýkám, že //Řádek 1 funguje zcela správně

BetaCam toto science fiction dělám, protože nevím jak jinak pracovat s daty které uživatel zapíše do textarea. Příklad:

Uživatel napíše do textarea pomocí šablony následující:

Mé jméno je Luboš
Narodil jsem se dne 0.0.0000
V Děčíně

No a já potřebuji pracovat jen s daty jako je jeho jméno, datum narození a místo narození. Proto cely textarea nejdříve rozložím na řádky a pak na slova.

Potřebuji uložit do proměnné informaci z řádku 1 slovo 4.
Potřebuji uložit do proměnné informaci z řádku 2 slovo 5.
Potřebuji uložit do proměnné informaci z řádku 3 slovo 2.

Pokud existuje jiný lehčí způsob, rád ho přivítám. Jen upozorňuji, že musím pracovat s formulářem textarea do kterého budou uživatelé zadávat informace podle dané šablony jen samozřejmě s jiným jménem,městem datumem narození apod....
nightfish
Profil
tak do proměnné $mesto2 se mi zapíše "$s55"."$s66" místo "$s66"." $s77"
jestli to nebude tím, že u Řádek 1 je
if ($s3 != "Něco"){
zatímco u Řádek 2
if ($s3 == "Něco"){
Blizar
Profil *
Přepracoval jsem to do podoby jakou mi ukázal YoSarin a funguje to perfektně, děkuji moc.
Jinač nightfish zkusil jsem i obě podmínky dát stejné a stejně to takto blbnulo :|, ale děkuji i tobě za snahu mi pomoci :)
Blizar
Profil *
Tak ne překouknul jsem se, i ta verze YoSarin blbne.
Kód vypadá nyní takto:
$radky = explode("\n", $text);
$prvniRadek = explode(" ", $radky[0]);
echo "<b>Řádek 1</b>:<br> ";
foreach ($prvniRadek as $place => $slovo) {
echo $place . ". " . $slovo . "<br>";
}
if ($prvniRadek[5] == "Něco") {
$prvniMesto = $prvniRadek[8] . " " . $prvniRadek[9];
} else {
$prvniMesto = $prvniRadek[7] . " " . $prvniRadek[8];
}
// a obdobně řádek 2...
$druhyRadek = explode(" ", $radky[1]);
echo "<b>Řádek 2</b>:<br> ";
foreach ($druhyRadek as $place => $slovo) {
echo $place . ". " . $slovo . "<br>";
}
if ($druhyRadek[2] == "Něco") {
$druhyMesto = $druhyRadek[5] . " " . $druhyRadek[6];
} else {
$druhyMesto = $druhyRadek[4] . " " . $druhyRadek[5];
}
//
echo "<b>Město 1</b>: $prvniMesto<br>";
echo "<b>Město 2</b>: $druhyMesto<br>";

Vše funguje v pořádku až do chvíle kdy "if ($druhyRadek[2] == "Něco")" souhlasí ale stejně do proměnné "$druhyMesto" nastaví "$druhyRadek[4] . " " . $druhyRadek[5]" místo "$druhyRadek[5] . " " . $druhyRadek[6]".
BetaCam
Profil
Blizar
Uživatel napíše do textarea pomocí šablony následující:

Mé jméno je Luboš
Narodil jsem se dne 0.0.0000
V Děčíně



No ono vždy záleží na případu kam to potřebuješ. Pokud by byla šablona taková jakou se tu napsal ty tak můžeš klidně stejně tak napsat třeba tohle :

<?php

$t = "Me jmeno je Lubos
Narodil jsem se dne 0.0.0000
V Decine";

function getData($d){
	foreach(explode("\n", $d) as $v){
		$out[] = substr(strrchr($v,' '),1);
	}
	return $out;
}

var_dump(getData($t));
?>


prostě nezlob se na mě, ale ten tvůj script mi přišel opravdu trochu přes ruku.
nightfish
Profil
if ($druhyRadek[2] == "Něco")" souhlasí
pak zřejmě nesouhlasí...
zkusil bych
if (trim($druhyRadek[2]) == "Něco")
...a pro jistotu bych ještě ověřil, jestli je text ve skriptu i v proměnné $text ve správném kódování (v případě, že $text může obsahovat diakritiku)
Blizar
Profil *
BetaCam
proč dělat věci lehce, když jdou složitě, že? :)
nightfish
"trim" opravdu pomohl, děkuji za pomoc
BetaCam
Profil
Blizar
proč dělat věci lehce, když jdou složitě, že? :)

No pokud mluvíš o tvých scriptech tak to zajisté platí. :)

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: