Diskuze: Kódování a PHP script
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 13 zpráv z 13.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
pravděpodobně kódování zdrojového kódu není UTF8. lepší IDE a editory to umí opravit.
No to jsem myslím taky hledala a Notepad++ i PSPAD ukazují UTF-8 
jinak takto vypadají výstupy
Zkus to v PSPadu uložit znovu po zvolení formátu. Zvolíš formát, klikneš na UTF-8 a uložíš. Mě to takhle občas bugovalo, ve skutečnosti to kódování bylo jiné i když to ukazovalo UTF-8, asi nějaká chybka.
Nemusi to byt problem s UTF-8. Vies nam dat viac informacii? Napriklad zdroj html kodu, ktory ti to vygenerovalo, nieco ako co som prilozil.
Z tvojho obrazku vidiet ze prvych sedem znakov ani nie je v <spane> pretoze nemaju nastavenu velkost fontu a farbu.
Takisto vies nam poslat co je v $this->text ? Skus pridat var_dump pred while cyklus.
$textlength = strlen($this->text);
var_dump($this->text);
while ($i < $textlength) {
Máš pravdu, není to v tom 
$ret = '';
$this->vypocetGradientu();
// čítač
$i=0;
$textlength = strlen($this->text);
var_dump($this->text);
while($i<$textlength)
{
foreach($this->GradientColors as $value)
{
if ($this->text[$i] != "")
{
$ret .= '<span style="font-size:43px; color:#'.$value.';">'.$this->text."</span>";
}
$i++;
}
}
echo ($ret);
$ret .= '<span style="font-size:43px;
color:#'.$value.';">'.$this->text."</span>";
-> Když jsem nechala přidat pouze $this->text bez toho indexu [$i]
vypisuje se to správně (akorát teda protože je to v cyklu, tak víckrát -
celej text)
Podle mě to bude tím, že ty háčko-čárkové znaky zabírají 2
místa... ? A pak je bordel u toho indexu? No nevím.. 
Tady dávám obrázek co to udělá s var_dump.. a s kódem výše. (je tam
vidět, že č zabírá 2 místa a s 1)
Jinak to html nevím co přesně myslíš 
Každopádně alespoň už vím, že to není kódováním

Pokud používáš UTF-8 jako kódování, tak nepoužívej funkci strlen, ale mb_strlen, protože české znaky v unicode zabírají 2 byty a ne jeden, proto ti dole ten var_dump ukazuje, že délka řetězce jsou 3, i kdžy to má ukazovat 2. Pokud chceš v tom tvem algoritmu změřit délku textu( počet znaků) a ne počet bytů, tak použij funkci mb_strlen, jak už jsem psal nahoře.
Kodovanie mas spravne ale
predsa je problem so spracovanim UTF-8 znakov.
Text "čs" ma 2 znaky ale zabera 3 bity. https://mothereff.in/byte-counter#…
Ak pozrieme http://php.net/strlen tak tam najdeme
Note:
strlen() returns the number of bytes rather than the number of characters in a string.
Tvoj cyklus ide preto tri razy. Ak chces naozaj pocitat znaky, tak v tvojom pripade by som pouzil
$textlength = iconv_strlen($this->text, mb_detect_encoding($this->text));
K bodu dva: tvoje $this->text[$i] by ti malo vratit jeden znak z tvojo
textu. Ale kedze "č" zabera
dva znaky tak ti to takto nebude fungovat. Musis pouzit byte safe funkciu vo
vnutri tvojho foreach loopu (http://php.net/…b-substr.php) Asi takto:
if (mb_substr($this->text(), $i, 1, mb_detect_encoding($this->text)) != "")
{
$ret .= '<span style="font-size:43px; color:#'.$value.';">'.mb_substr($this->text(), $i, 1, mb_detect_encoding($this->text))."</span>";
}
Moc děkuji!
Tohle
funguje jak má! 
btw: děkuji všem za odpovědi 
Vyřešeno
zabera 3 bity jsi asi chtěl napsqat jako zabera 3 bYty
bit a byte je rozdíl.
1 byte = 8 bitů.
Spravne, to som chcel napsQat. Chybicka se vloudila 
Zobrazeno 13 zpráv z 13.
