Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

chovani php pole

Kamil
verified
rating uzivatele
(39 hodnocení)
17. 1. 2010 19:16:28
Zdravim pratele,
narazil jsem na problem, ktery bude mit banalni vysvetleni, ale ja na nej nemuzu prijit. Potrebuji odstranit carku na konci kazdeho udaje v poli. Napr:
function trim_value(&$value)
{
$value = trim($value, ',');
}
$users = array('první,', 'druhý,', 'třetí,');
array_walk($users, 'trim_value');
print_r ($users);
?>
tohle funguje bezproblemu. Potiz zacina pokud pole nactu z externiho txt souboru, kde je na kazde radce udaj s carkou na konci. Napr:
users.txt
první,
druhý,
třetí,
zde script:
$userfile= file_get_contents("users.txt");
$users = explode("n",$userfile);
function trim_value(&$value)
{
$value = trim($value, ',');
}
array_walk($users, 'trim_value');
print_r ($users);
?>
odstrani se pouze carka za poslednim udajem v poli. Zatim jsem to vyresil pres mb_substr, ale chova se to podivne. Pri prochazeni pole
mb_substr($users, "", -3); // ukaze posledni znak krome posledniho zaznamu v poli
mb_substr($users, "", -1); // ukaze posledni znak u posledniho zaznamu v poli.
sice to funguje, ale me by zajimalo proc se pole ktere nactu ze souboru chova jinal nez pole vytvorene uvnitr scriptu. Jeste dodam ze vse je v UTF-8.
17. 1. 2010 19:16:28
https://webtrh.cz/diskuse/chovani-php-pole/#reply440289
Tom
verified
rating uzivatele
(7 hodnocení)
17. 1. 2010 19:40:02
Predpokladam, ze tam bude problem v bilych znacich (novy radek, tab, novy radek pro linux,....)
nebylo by jednodussi str_replace?
17. 1. 2010 19:40:02
https://webtrh.cz/diskuse/chovani-php-pole/#reply440288
Jakub Stacho
verified
rating uzivatele
(20 hodnocení)
17. 1. 2010 19:51:11
Řádky souboru mohou být (v závislosti na systému) ukončeny r, n, případně obojím.
Pokud soubor načteš pomocí file, může se stát, že na konci každého záznamu zůstane bílý znak a čárka pak není poslední ale předposlední.
Takže trim($value, ',rn');
17. 1. 2010 19:51:11
https://webtrh.cz/diskuse/chovani-php-pole/#reply440287
Kamil
verified
rating uzivatele
(39 hodnocení)
17. 1. 2010 19:59:35
Napsal double;437149
Predpokladam, ze tam bude problem v bilych znacich (novy radek, tab, novy radek pro linux,....)
nebylo by jednodussi str_replace?
diky, jenze to me odstrani i carky uvnitr ne jen na konci.
tracy diky, to bude ono, jdu na to.
17. 1. 2010 19:59:35
https://webtrh.cz/diskuse/chovani-php-pole/#reply440286
Petr Vacek
verified
rating uzivatele
20. 1. 2010 15:54:45
pro načítání obsahu souborů z disku můžeš použít funkci file() http://php.net/manual/en/function.file.php - ta ti přímo vrátí pole řádků daného souboru, už bys pak nemusel použít funkceexplode()
20. 1. 2010 15:54:45
https://webtrh.cz/diskuse/chovani-php-pole/#reply440285
Jakub Stacho
verified
rating uzivatele
(20 hodnocení)
20. 1. 2010 19:23:20
I funkce file() nechává v určitých případech na koncích prvků bílý znak.
20. 1. 2010 19:23:20
https://webtrh.cz/diskuse/chovani-php-pole/#reply440284
node
verified
rating uzivatele
(5 hodnocení)
20. 1. 2010 20:17:57
http://sk.php.net/manual/en/function.fgetcsv.php
20. 1. 2010 20:17:57
https://webtrh.cz/diskuse/chovani-php-pole/#reply440283
Kamil
verified
rating uzivatele
(39 hodnocení)
21. 1. 2010 00:27:56
Po fopen napravo odriznu vsechno rtrim(fgets($file_handle)) a funguje to. Jen by me zajimalo co tim vlastne odrezavam, je nejaka moznost zobrazit co presne se mi do pole nacetlo? Prochazel jsem si funkce pro praci s array a nic jsem nenasel.
21. 1. 2010 00:27:56
https://webtrh.cz/diskuse/chovani-php-pole/#reply440282
Petr Vacek
verified
rating uzivatele
22. 1. 2010 00:13:21
Napsal Kamil;439592
Po fopen napravo odriznu vsechno rtrim(fgets($file_handle)) a funguje to. Jen by me zajimalo co tim vlastne odrezavam, je nejaka moznost zobrazit co presne se mi do pole nacetlo? Prochazel jsem si funkce pro praci s array a nic jsem nenasel.
hledáš funkci print_r nebo var_dump (var_dump je trošku detailnější)
echo "
".print_r($pole,true)."
";
//nebo jenom
print_r($pole);
//případně
var_dump($pole);
*edit:
a funkce trim, ltrim, rtrim defaultně ořezávají bílé znaky, takže mezery, tabulátory, znaky pro nový řádek, posuny kurzorů, atd... (čárky, tečky to nechává). Jinak to co se ořezává jde specifikovat druhým parametrem funkce
22. 1. 2010 00:13:21
https://webtrh.cz/diskuse/chovani-php-pole/#reply440281
Kamil
verified
rating uzivatele
(39 hodnocení)
22. 1. 2010 18:03:00
Me zajimalo jestli je moznost videt presne co vsechno pole obsahuje a to ti print_r a var_dump neukaze.
Napsal vacek;440475
hledáš funkci print_r nebo var_dump (var_dump je trošku detailnější)
echo "
".print_r($pole,true)."
";
//nebo jenom
print_r($pole);
//případně
var_dump($pole);
22. 1. 2010 18:03:00
https://webtrh.cz/diskuse/chovani-php-pole/#reply440280
function my_trim(&$item, $key, $chars)
{
$item = trim($item, $chars);
}
$in = file('blabla.txt');
array_walk(&$in, "my_trim", "n," );
24. 1. 2010 12:29:45
https://webtrh.cz/diskuse/chovani-php-pole/#reply440279
Případně do parametru chars dát "nr,"
24. 1. 2010 12:33:37
https://webtrh.cz/diskuse/chovani-php-pole/#reply440278
Petr Vacek
verified
rating uzivatele
24. 1. 2010 18:11:58
Napsal Kamil;440998
Me zajimalo jestli je moznost videt presne co vsechno pole obsahuje a to ti print_r a var_dump neukaze.
Napsal vacek;440475
hledáš funkci print_r nebo var_dump (var_dump je trošku detailnější)
echo "
".print_r($pole,true)."
";
//nebo jenom
print_r($pole);
//případně
var_dump($pole);
potom bych asi zkusil napsat funkci, které by pole prošla a vypsala ti seznam znaků a jejich číslo v ascii tabulce:
$pole= file("nejaky_soubor.txt");
echo "
";
echo "puvodni pole:n";
myDump($pole);
$pole=array_map("trim",$pole);
echo "oříznuté pole:n";
myDump($pole);
echo "
";
function myDump(array $pole){
foreach($pole as $radek){
$delkaRadku = mb_strlen($radek);
for($i = 0 ; $i<$delkaRadku;$i++){
$znak = mb_substr($radek,$i,1);
$ascii = ord($znak); // u multibyte znakové sady nemusí fungovat správně .. více na http://cz.php.net/manual/en/function.ord.php .. v diskuzi jsou potom funkce 'ordUTF8' případně 'uniord'
echo " ({$ascii}){$znak} ";
}
echo "n";
}
}
pak si můžeš porovnat všechny znaky, které byly odříznuty
24. 1. 2010 18:11:58
https://webtrh.cz/diskuse/chovani-php-pole/#reply440277
Pro odpověď se přihlašte.
Přihlásit