Kā lai no variabļa dabū ārā noteiktu skaitu burtu?

Sākumlapa Forumi Mājas lapu izstrāde Servera puse (php, java, ruby, perl, python) Kā lai no variabļa dabū ārā noteiktu skaitu burtu?

Tiek skatīts 1 ieraksts (no 27 kopumā)
  • Autors
    Ieraksti
  • #150352
    guitarman
    Participant

    Sveiki, esmu php iesācējs, tādēļ lūdzu neapsmejiet mani.. :lala:

    Karoč man ir mainīgais kurā ir, piemēram, tūkstotis burtu (teksts).

    Kā lai no viņa izdabū arā (echo) TIKAI pirmos simts burtus ?

    Paldies.

    #224318
    Crow
    Participant

    PHP manuāli novelc. Tur ir rakstīts viss, ko tev varētu vajadzēt. Ar visiem piemēriem 🙂

    string substr ( string $string , int $start [, int $length ] )

    #224319
    Andress
    Participant

    Funkcija atrodas šeit. Iekļauj šo funkciju kodā kautkur, kur vēlies. Tālāk:

    Izsaukt:

    Code:

    echo mb_substrws( $teksts_kuru_apgriezt, ‘200’);

    kur 200 ir skaitlis, cik simbolus gribi paradit.

    #224320
    guitarman
    Participant

    Lielu lielais paldies! Viss sanāca 🙂

    #224321
    Aldis
    Participant

    Nav pat jāvelk, viss ir paslēpts internetos.. https://lv.php.net/substr

    https://lv.php.net/ funkcijas vārds

    #224322
    Andress
    Participant

    Visiem, kuri latvijā ieteiks substr lietot, došu pa asti. 🙂 Multy-bite failure expected…

    #224323
    guitarman
    Participant

    Piedodiet par mazzinību, bet kas būtu “Multy-bite failure” ?

    #224324
    Wuu
    Participant

    Andress wrote:

    Visiem, kuri latvijā ieteiks substr lietot, došu pa asti. 🙂 Multy-bite failure expected…


    Atkal līmi osti? pšš…

    #224325
    Andress
    Participant

    Īsumā- vairums latviešu burtu ir multy-byte, TB to garums ir nevis kā klasiski- 1 byts, bet gan 2. Substr nav multy-bite atbalstoša funkcija, tādēļ tā “pārgriež” multy-byte burtus uz pusēm parvēršot tos simbolos. Piemēram mums ir teksts no 6 burtiem,

    Quote:

    aaaaaš

    a= 1 byte

    š= 2 bytes

    tatad kopējais garums – 7 bytes.

    Apgriežot tekstu uz 6 simboliem ar substr, pēdējais š var tikt pārgriezts. (nezinu kapēc, bet dažreiz tas nenotiek. bug?) un izvadīts kā nezināms simbols. Latviešu valodas string apstrādei nepieciešams izmantot MB saderīgas funkcijas, piemēram mb_substr vai tā, ko tev iedevu es (var atrast PHP.net). Kaut daudz maz saprati? Ja ne, PM, paskaidrošu tuvāk.

    #Wuu, aizver žjaunu. Pok3mons. 🙂

    #224326
    Wuu
    Participant

    Andress uzreiz tā nevarēji, nevis valsts mērogā nolikti funkciju 🙂

    #224327
    Crow
    Participant

    Ja visās iespējamās vietās izmanto UTF-8 un nesadirš tekstu pirms padošanas, ar letiņu burtiem iekš 5.2.x problēmām nevajadzētu būt. Vispār mbstring ir lēns kā nāve, bet citādi jau jēdzīgu domu pateica 🙂

    Multy-bite Multi-byte! Bļin, tak iemācies angliski rakstīt beidzot 😀

    #224328
    guitarman
    Participant

    Andress wrote:

    Īsumā- vairums latviešu burtu ir multy-byte, TB to garums ir nevis kā klasiski- 1 byts, bet gan 2. Substr nav multy-bite atbalstoša funkcija, tādēļ tā “pārgriež” multy-byte burtus uz pusēm parvēršot tos simbolos. Piemēram mums ir teksts no 6 burtiem,

    Quote:

    aaaaaš

    a= 1 byte

    š= 2 bytes

    tatad kopējais garums – 7 bytes.

    Apgriežot tekstu uz 6 simboliem ar substr, pēdējais š var tikt pārgriezts. (nezinu kapēc, bet dažreiz tas nenotiek. bug?) un izvadīts kā nezināms simbols. Latviešu valodas string apstrādei nepieciešams izmantot MB saderīgas funkcijas, piemēram mb_substr vai tā, ko tev iedevu es (var atrast PHP.net). Kaut daudz maz saprati? Ja ne, PM, paskaidrošu tuvāk.

    Nu viss skaidrs.. paldies liels. Domāju ka pats tikšu galā jo atradu vēl materiālus par šo. Tieši viss sanāca ar Substr, bet ja tāda tā lieta, tad skatīšu citus variantus, bet maķenīt gudrāks paliku. Paldies par to 😉

    #224329
    Aldis
    Participant

    Piekrītu Andress..

    Vēl var izmantot ko šādu!

    Code:

    function wordCut($sTeksts, $maksimalais_garums, $sZinjas_beigas)
    {
    if (strlen($sTeksts) > $maksimalais_garums)
    {
    $sString = wordwrap($sTeksts, ($maksimalais_garums-strlen($sZinjas_beigas)), ‘[cut]’, 1);
    $asExplodedString = explode(’[cut]’, $sString);

    echo $sCutText = $asExplodedString[0];

    $sReturn = $sCutText.$sZinjas_beigas;
    }
    else
    {
    echo $sTeksts;
    }

    return $sReturn;
    }

    Pielietojums:

    Code:


    /// Ievadi tekstu pie $teksts kuru vajag noskaldiit mazaaku
    /// otrais mainiigais ir teksta garums kuru vajag noskaldit nost – piemeram sheit no teksta paradas 100 simboli…
    /// teksta noraavums – piemeram daudzpunkte beigaas, vai punktu vieta var likt (Lasit talak) – atkariibaa kaa tev vajag

    wordCut($teksts, 100, ‘…’);

    #224330
    Andress
    Participant

    Crow wrote:


    Multy-bite Multi-byte! Bļin, tak iemācies angliski rakstīt beidzot 😀

    W000t, atvaino, svētdienas vakars, pudele ruma. 🙂

    @Autoram, es taču jau iedevu risinājumu: https://paste.php.lv/1fb366517924cb8d8faa74f1b16d7521?lang=php

    #224331
    Aldis
    Participant

    Vsp. jo mēs te php mācētāji katrs savu funkciju iemetīsim – tad būs interesanti – vairāki varianti gandrīz vienam pielietojumam! 😀

    #224332
    Wuu
    Participant

    Es lietoju šādu, lai neveidotos nepabeigti vārdi un visi multy biti pie kājas.

    Code:

    function uCrop($text,$lenght) {
    if (strlen($text) > $lenght) {
    $text = substr($text,0,$lenght);
    $text = trim($text);
    $text = explode(” “, $text, -1);
    $text = implode(” “,$text);
    }
    return $text;
    }

    #224333
    Crow
    Participant

    Eh, karoče – visiem prodžektiem spiežam STOP un gaidam PHP 6, kur Unicode supports beidzot būs native.

    #224334
    Aldis
    Participant

    Wuu variants līdzīgs manam 🙂

    paamtā nosaka strlen, tad apcērpj, neskaitot baitus! 🙂

    #224335
    guitarman
    Participant

    Atvainojos ka velku ārā vecu tēmu, bet jaunu taisīt nav vērts, jo temats tas pats, tikai šoreiz radās cita problēma.

    Izmantoju Andress doto funkciju:

    Andress wrote:

    Funkcija atrodas šeit. Iekļauj šo funkciju kodā kautkur, kur vēlies. Tālāk:

    Izsaukt:

    Code:

    echo mb_substrws( $teksts_kuru_apgriezt, ‘200’);

    kur 200 ir skaitlis, cik simbolus gribi paradit.

    Funkciju pielietoju šeit:

    [img]https://img202.imageshack.us/img202/8127/19013360.png[/img]

    (To var redzēt iekš http://www.troksnis.lv uzreiz pirmajā lapā)

    Taču nezin kāda iemesla dēļ dažreiz simbolu skaits pie lapas refrešošanas mainās lūk šādi:

    [img]https://img707.imageshack.us/img707/5236/41984789.png[/img]

    Respektīvi tad vairāk simbolu, tad mazāk.

    Un tas notiek tikai pie refrešošanas vai ieešanas citā sadaļā, un pats jokainākais ir tas, ka tas notiek tikai dažreiz, varētu pat teikt ka reti – ne pie katras refrešošanas. Pētīju to funkciju ar savām pašdarbnieciskajām php zināšanām, bet gudrs netiku.

    Varbūt kāds zinošāks varētu pateikt kur slēpjas āķis?

    #224336
    Wuu
    Participant

    Pamēģini manu funkciju.

Tiek skatīts 1 ieraksts (no 27 kopumā)
  • Jums ir jāpieslēdzas sistēmai, lai varētu komentēt šo tēmu.
Jaunākais portālā