Pereiti prie turinio

strlen() kiek simbolių


Rekomenduojami pranešimai

Gal galėtumėt pasakyti, kodėl šiuo atveju atsakymas bus 2 o ne 1?

 

$zodis = "š";

$simboliu_sk= strlen($zodis);

echo $zodis;

 

čia jau normaliai skaičiuoja, atsakymas 4. Kodėl lietuviškas raides skaičiuoja kaip už 2 simbolius?

 

$zodis = "mama";

$simboliu_sk= strlen($zodis);

echo $zodis;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Šitaip naudoti:

mb_strlen($zodis,'UTF-8');

 

strlen() skaičiuoja ne simbolių kiekį, o bitus.

Labai aiškus atsakymas, dėkuj, gal dar į šį klausimą turėtum atsakymą:

$žodis = "šuo";

if ($žodis[0] = "š") {

true;

} else {

false;

}

Visada bus false, bet jeigu imčiau antra raidę ir lyginčiau su "u" tai išvestų true...

Redagavo proof
Nuoroda į pranešimą
Dalintis kituose puslapiuose

if() sakinyje priskiri reikšmę, o ne lygini. Lyginimui reiktų naudoti du = simbolius arba tris :)

 

Šiek tiek daugiau info: http://stackoverflow.com/questions/80646/how-do-the-equality-double-equals-and-identity-triple-equals-comparis

Redagavo Satisfaction
Nuoroda į pranešimą
Dalintis kituose puslapiuose

if() sakinyje priskiri reikšmę, o ne lygini. Lyginimui reiktų naudoti du = simbolius arba tris :)

 

Šiek tiek daugiau info: http://stackoverflow.com/questions/80646/how-do-the-equality-double-equals-and-identity-triple-equals-comparis

čia netyčia greit berašydamas palikau klaidą, tarkim, kad lyginu, ir ant lietuviškų raidžių niekada neišveda true, kodėl ? :/ strlen() skaičiuoja kaip dvejetą, tai gal kažkokią simboliką reikia tikrinti, o ne š?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kodėl? Beje atsakymas ir su mb_strlen() vistiek 2 :)

 

Paskaityk mb_strlen() dokumentaciją - http://php.net/manual/en/function.mb-strlen.php . Antras parametras nurodo kokia koduotė naudojama pirmam parametre. Jei lietuviškas raides koduoji su UTF-8 (geriausias variantas) tai funkcija atrodytu taip:

 

mb_strlen($zodis,'UTF-8');

 

Paprasta vidinė PHP koduotė naudoja vieną baitą vienam simboliui. Vienas baitas gali reprezentuoti 256 simbolius. Lietuviškos raidės netelpa į tokia mažą simbolių lentelę, todėl reikia naudoti kitą koduotę, pvz. UTF-8.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Viskas PHP paprastai skaičiuojama baitais.

Visur, kur žaidi su String'ais, stengiesi naudoti mb_* (multibyte) funkcijas.

 

Antram klausimui, žiūrėk į mb_substr().

Redagavo Satisfaction
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Labai aiškus atsakymas, dėkuj, gal dar į šį klausimą turėtum atsakymą:

$žodis = "šuo";

if ($žodis[0] = "š") {

true;

} else {

false;

}

Visada bus false, bet jeigu imčiau antra raidę ir lyginčiau su "u" tai išvestų true...

 

Tokiu atveju geriausias variantas yra:

 

$zodis="šuo";

if(mb_substr($zodis,0,1)=="š")

{

echo "Taip";

}

else

{

echo "Ne";

}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tokiu atveju geriausias variantas yra:

 

$zodis="šuo";

if(mb_substr($zodis,0,1)=="š")

{

echo "Taip";

}

else

{

echo "Ne";

}

Puikus variantas kai žinomas žodis, bet jeigu žodis neaišku iš kiek simbolių bus ir kurios raidės reikės, tai šiek tiek kėbliau :) prieš tai dariau taip: suskaičiavau simbolius tada padariau for ciklą kad suktūsi tiek kartų kiek simbolių ir ėmiau kiekvieną raidę "zodis[$i]" atskirai, tik vat susidūriau su problema, kad taip lietuviškos raidės nenuskaitysi :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Puikus variantas kai žinomas žodis, bet jeigu žodis neaišku iš kiek simbolių bus ir kurios raidės reikės, tai šiek tiek kėbliau :) prieš tai dariau taip: suskaičiavau simbolius tada padariau for ciklą kad suktūsi tiek kartų kiek simbolių ir ėmiau kiekvieną raidę "zodis[$i]" atskirai, tik vat susidūriau su problema, kad taip lietuviškos raidės nenuskaitysi :)

 

Jeigu ne paslaptis, koks tikslas to kodo?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

As taip daryciau

 

<?php
$input = 'šuo';
$result = preg_match('/šuo/', $input) ? 'Yes' : 'No';
echo $result;

//jei reiksmiu daug
$big_input = array('šuo', 'katė', 'papūga');
$result = in_array('kate', $big_input) ? 'Yes' : 'No';
echo $result;
?>

 

įvesto žodžio kiekvieną raidę atskirai paimti :)

 

PHP nera grieztai tipizuota kalba - viskas yra string.

 

<?php
$input = 'suo';
echo $input[0].$input[1].$input[2];
?>

Redagavo apieviska
Nuoroda į pranešimą
Dalintis kituose puslapiuose

As taip daryciau

 

<?php
$input = 'šuo';
$result = preg_match('/šuo/', $input) ? 'Yes' : 'No';
echo $result;

//jei reiksmiu daug
$big_input = array('šuo', 'katė', 'papūga');
$result = in_array('kate', $big_input) ? 'Yes' : 'No';
echo $result;
?>

 

Aš irgi su masyvu norėjau daryti, tik nežinau kaip įvesto žodžio reikia atskirti kiekvieną simbolį. Realiai tai

$zodis = "abc";

echo $zodis[0]; //BUS a

echo $zodis[1]; //BUS b

echo $zodis[2]; //BUS c

 

o jeigu lietuvišką raidę taip imi tai išveda klaustuką :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš irgi su masyvu norėjau daryti, tik nežinau kaip įvesto žodžio reikia atskirti kiekvieną simbolį. Realiai tai

$zodis = "abc";

echo $zodis[0]; //BUS a

echo $zodis[1]; //BUS b

echo $zodis[2]; //BUS c

 

o jeigu lietuvišką raidę taip imi tai išveda klaustuką :)

 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

 

http://apieviska.info/kaip-pakeisti-tinklapio-saito-koduote/

Redagavo apieviska
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Beabejo to nepamiršau.

ctrl+u -> ctrl+a -> ctrl+c -> ctrl+v cia arba netikiu

 

$zodis = "žvaigždė";
$koduote = "UTF-8";
$ilgis = mb_strlen($zodis, $koduote);
for($i=0;$i<$ilgis;$i++){
echo "<br/>".mb_substr($zodis,$i,1,$koduote);
}

 

Pakankamai paprasta viskas.

Humoristas

Redagavo apieviska
Nuoroda į pranešimą
Dalintis kituose puslapiuose

įvesto žodžio kiekvieną raidę atskirai paimti :)

 

<?php 
$string = 'ėį9ūėę9šėęūėęč0įųęųėū9į';

preg_match_all ( '/./u', $string, $m );

echo '<pre>';
print_r ($m [ 0 ]) ;
echo '</pre>';
?>

 

Array
(
   [0] => ė
   [1] => į
   [2] => 9
   [3] => ū
   [4] => ė
   [5] => ę
   [6] => 9
   [7] => š
   [8] => ė
   [9] => ę
   [10] => ū
   [11] => ė
   [12] => ę
   [13] => č
   [14] => 0
   [15] => į
   [16] => ų
   [17] => ę
   [18] => ų
   [19] => ė
   [20] => ū
   [21] => 9
   [22] => į
)

 

 

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ą...