Php magyar karakterek kiírása
2016-06-09T06:26:56+02:00
2016-06-09T12:45:30+02:00
2022-07-21T21:29:02+02:00
  • <?php $str = "csörnyeföldi"; $sp = preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY); foreach($sp as $val) echo "\t".$val."\n";

    eredmény a mellékletben.


    --[ui: Notepad ++ v.6.9.2 nem kódol bom nélkül? ---  örülj neki, hogy nem emacs-ban dolgozol 
    Mutasd a teljes hozzászólást!
  • Szia.

    Ha nem egyéb, a tanár én vagyok és a jó öreg internet. Tehát autodidakta módon tanulom. A fájlt utf8 bom nelkul mentettem. Nem csak Notepad++ -ban próbáltam. A probléma továbbra is fennt állt. Javaslom, hogy próbáld megoldani a feladatot, kíváncsi vagyok a te megoldásodra is.
    A feladat: Írjon programot, amely egy szöveg betűit egymás alá írja ki a képernyőre! Használjon ehhez egy tömböt!
    Azt szerettem volna megoldani, hogy ahány karakter annyi index is legyen. Karakterösszevonással könnyű :)


    De lehetséges, hogy valami más a probléma. Lehetséges az, hogy a Notepad ++ v.6.9.2 nem kódol bom nélkül? Valaki tapasztalt hasonlót?

    A feladatra figyelni ne a k;nyelmesebb megoldásokra!
    Tisztelettel Fadgyas Egmond 36 éves, nem diák

    U..I. Ha kíváncsi  vagy a forráskódomra szívesen átlküldöm.
    fadgyasegmond@gmail.com

    Jaa... lehet az a baj, hogy annak idején ZX-Spectrumon kezdtem :)
    Mutasd a teljes hozzászólást!
  • Láthatjuk, hogy valamilyen okból a string művelet nem adja vissza a magyar ékezetes karaktereket

    Nézz utána, hogy hogyan is működik az UTF-8 kódolás. Tanár biztos örülne, ha meg is tudnád magyarázni hogy miért történik ami történik és nem csak egy függvényt dobnál be a webről amit találtál. Illetve annak is érdemes utánajárni, hogy a str_split_unicode függvény miért is működik, holott mindkettő a preg_split-et használja (segítség: ha a lényegi részt nézzük, akkor a szoveg2_felbont és str_split_unicode függvények közt egyetlen karakter különbség van csak - és ebben a karakterben van a lényeg, hogy miért nem működik az egyik és miért működik a másik).

    Gondolatébresztőnek: PHP Sandbox, test PHP online, PHP tester (katt az execute-ra)

    ui: PHP-nál érdemes figyelni, hogy mi milyen karakterkódolásban van mentve. Ha UTF-8-at használsz, akkor legyen minden UTF-8-ban (ha fájl, akkor UTF8 BOM nélkül mentsd, különben találkozhatsz a jó öreg "Warning: Cannot modify header information - headers already sent by" hibaüzenettel). Később megspórolhatsz egy rakás buktatót.
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Köszönöm, közben kiprobáltam és rájöttem, hogy a te kódod dinamikusabb. Szép megoldás
    Mutasd a teljes hozzászólást!
  • Hali!

    A feladathoz az is hozzátartozott, hogy mindezt tomb segítségével tegyem meg.

    Az én kódom „bájtra” ugyanazt az eredményt adja, mint az általad készített/talált. 

    Mutasd a teljes hozzászólást!
  • Sziasztok.
    Így jár az ember, ha nem fejezi ki érthetően magát. A feladathoz az is hozzátartozott, hogy mindezt tomb segítségével tegyem meg. Azzal nincs gond, hogy ékezetes karaktereket írassak ki, a php- ben elhelyeztem erre vonatkozó kódot. Akkor jelentkezik a probléma, amikor tömbbe akarom helyezni a karaktereket. Az ékezeteseket ugyanis két részre bontja, így két karaktert ír egy helyett a tömbbe. Ennek kiküszöbölésére találtam a fentebb említett megoldást. Köszönöm a hozzászólásotokat. Hasznosak lesznek más problémáknál.
    Mutasd a teljes hozzászólást!
  • Hali!

    Erre a feladatra azért jóval egyszerűbb megoldás is található:
    <?php function str_split_unicode($str, $length = 1) { $length = intval($length) < 1 ? 1 : intval($length); if (preg_match_all("/.{1,".$length."}/su", $str, $matches)) { return $matches[0]; } return []; } $text = "árvíztűrő tükörfúrógép meg más is"; print_r(str_split_unicode($text, 3));

    Mutasd a teljes hozzászólást!
  • Elírtad a saját neved.
    Mutasd a teljes hozzászólást!
  • Nem a folyószöveget kellene forráskód stílusra állítani, hanem a kódot...
    Mutasd a teljes hozzászólást!
  • <?php mb_regex_encoding('UTF-8'); mb_internal_encoding("UTF-8"); // és a példa $str = "csörnyföldi"; print_r(preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY)); ?>
    Mutasd a teljes hozzászólást!
  • Valaki legyen szíves elárulni, hogy hogyan tehetem színessé a forráskódot a beírásaimban
    Mutasd a teljes hozzászólást!
  • Sziasztok. A napokban egy érdekes feladatot kaptam, melyet szerettem volna megoldani. A feladat lényege az volt, hogy egy szöveg karaktereit írassam ki sorban egymás alá. Próbáltam print $text[index]; módszerrel, próbáltam, preg_split függvénnyel, de sajnos nem volt hajlandó kiírni az ékezetes karaktereket. Végül megtaláltam a megoldást. Ezt szeretném megosztani veletek, hátha segít valakinek. Részletes leírást a http://php.net/manual/en/function.str-split.php linken találtok. Innen származik a forráskód is.
    <?php
    function str_split_unicode($str, $length = 1) {
        $tmp = preg_split('~~u', $str, -1, PREG_SPLIT_NO_EMPTY);
        if ($length > 1) {
            $chunks = array_chunk($tmp, $length);
            foreach ($chunks as $i => $chunk) {
                $chunks[$i] = join('', (array) $chunk);
            }
            $tmp = $chunks;
        }
        return $tmp;
    }

    $s = 'Ékezetes szöveg ÉÁáé :)'; // Open Source!
    print "<pre>";
    print_r(str_split_unicode($s));
    print "</pre>";

    ?>

    Mutasd a teljes hozzászólást!
    Csatolt állomány
abcd