Diskuze: <textarea> zoradenie slov
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 17 zpráv z 17.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Mozno by ma uzivatel kazdy zaznam potvrdit klavesou enter a ty ju pouzijes ako oddelovac.
Hmm a jedná se o řetězce bez bílých znaků či to mohou být i 2 slova na jednom řádku?
V tom případě by se záznamy mohli oddělovat i středníkem.
zaznam1;zaznam2;apod..
Edit: Pokud tedy není problém změnit formát vstupních dat.
asi to neni moc OK řešení, ale něco takovýho by asi mělo fungovat
$str = "
zaznam1
zaznam2 zaznam3
zaznam4
zaznam5
";
$str = str_replace(" ", "\n", $str); // mezery změní na řádky
$arr = explode("\n", $str);
foreach ($arr as &$val) {
if (empty($val)) {
unset($val);
}
}
echo "<pre>";
print_r($arr);
Ahoj, to urcite nie...ide o zoznam subjektov, ktory sa nasledne ma spracovat hromadne a automaticky...moze iste aj o tisicky zaznamov.
Zoznam zaznamov je distribuovany zvacsa v tom formate, co pisal, teda:
zaznam1
zaznam2
zaznam3
atd.
Nasledne je zoznam zoradeny podla abecedy a potom su jednotlive zaznamy vlizene do tabulky a vzika tak dokument A4 aj viacstranovy.
Jestli je to odpověď na mě, zkus do podmínky if (empty($val)) hodit if
(empty(trim($val))).
V podstatě se nějak musíš zbavit prázdných záznamů, pokud chápu
správně.
Ale asi na to celkově bude lepší řešení
Tak jsem to zkusil na localu a tohle šlo něco takovýho
$str = str_replace(" ", "\n", $str); // mezery změní na řádky
$arr = explode("\n", $str);
foreach ($arr as $key => $val) {
$val = trim($val);
if (empty($val) || $val === "") {
unset($arr[$key]);
}
}
echo "<pre>";
print_r($arr);
Bez prvého riadku by bol skript odolnejší voči viaslovným pomenovaniam...
... ale zase by to nebylo odolný proti tomuto, cituji:
Uzivatel vsak moze urobit chybu pri vkladani udajov to <textarea>, napr.
zaznam1
zaznam2 zaznam3zaznam4
zaznam5atd.
Veď si to ošetril tou podmienkou. Prípadne, ak by to nefungovalo dobre, ide zisťovať, či sa val != iba "\n".
Čisto teoreticky by toto mohlo fungovať:
$arr = explode("\n", $str);
foreach ($arr as $key => $val) {
$val = trim($val);
if (empty($val) || $val == "\n") {
unset($arr[$key]);
}
}
echo "<pre>";
print_r($arr);
echo "</pre>";
otázkou je, jestli se
zaznam1 zaznam2
má uložit jako jeden nebo dva zánamy. Řešení nás obou může být správně i špatně.
@Martin Konecny(pavelco1998)
Vlozil som to do kodu a vysledok bol, ze mi [3] prvok v poli bol zrusny, co malo za nasledok:
Array
(
[0] => zaznam1
[1] => zaznam2
[2] => zaznam3
[4] => zaznam4
[5] => zaznam5
)
Vystup u mna do tabulky so 4 stlpcami tak bol:
@Tomas123 pouzil som tvoj kod a vypis hodnoty pola je:
Array
(
[0] => zaznam1
[1] => zaznam2 zaznam3
[3] => zaznam4
[4] => zaznam5
)
Vystup do tabulky:
1. zaznam1 2. zaznam2 3. 4. zaznam4
Vstupne data boli rovnako napisane teda:
zaznam1
zaznam2 zaznam3
zaznam4
zaznam5
Nie som az tak dobry v PHP, pouzili ste funkcie ako trim, empty, unset, <pre>, kt. som este nepouzil...
Zatial ma napada, napisat pouzivatelovi, ze nech to tam vklada spravne, inak sa mu to zle vygeneruje...
Zobrazeno 17 zpráv z 17.