Pereiti prie turinio

PHP chunk_split prideda atsitiktinių tarpų?


Rekomenduojami pranešimai

Sakyčiau įdomi problema, string trumpinant su chunk_split atsiranda neaiškių tarpų. Nepavyko rasti jokio dėsningumo kas kiek simbolių ar kaip tai atsiranda.

 

PHP kodas:

var_dump($value['Content']);
echo chunk_split($value['Content'], 140, "\n");

 

Bet štai var dump rodo:

čia naujienos, tekstas negali

 

O rodomas vietoje, div'e:

čia naujien os, tekstas negali

 

Iš kur tas tarpas? Niekaip nesuprantu... Arba ne ten ieškau. Gal kas turit idėjų?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taip ir taip. Nors toje vietoje nėra jokio html entity.

 

Nepatarciau chunk_split naudoti tada, nes jis ne tik su html entities nesusidoroja, bet ir multibyte raidemis. Geriau jau pasirasyk/susirask metoda, kuris susidoruotu su tuom, pvz:

function chunk_split_unicode($str, $l = 76, $e = "\r\n") {
   $tmp = array_chunk(
       preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $l);
   $str = "";
   foreach ($tmp as $t) {
       $str .= join("", $t) . $e;
   }
   return $str;
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nepatarciau chunk_split naudoti tada, nes jis ne tik su html entities nesusidoroja, bet ir multibyte raidemis. Geriau jau pasirasyk/susirask metoda, kuris susidoruotu su tuom, pvz:

function chunk_split_unicode($str, $l = 76, $e = "\r\n") {
   $tmp = array_chunk(
       preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $l);
   $str = "";
   foreach ($tmp as $t) {
       $str .= join("", $t) . $e;
   }
   return $str;
}

 

Užtrukau atsakyt, bet dėkoju už funkciją. Viskas veikia. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dar vienas dalykas, kas tas "//u"?

 

Klausiu nes man dar reikia ją pasikoreguoti. Tekste taip pat gali būti html tag'u ir panašu kad kai kuriais atvejais jie dingsta.

 

// - delimiter

u - nurodo, kad naudot utf-8

 

regex eitu tarp // (/^.-$/), o po delimiter, galima nurodyti ekstra nustatymus, kaip 'u', 'i', 'D' ir pan. (priklausomai nuo kalbos)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...