Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP kódování stránky

<?php
header("Content-Type: text/html; charset=UTF-8");
$a="Včera";
echo StrTr($a,'ÁÄČÇĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíňóöřšťúůüýž', 'AACCDEEEINOORSTUUUYZaaccdeeeinoorstuuuyz');
<?
proč mi to ukazuje VATera místo Včera? díky

Předmět Autor Datum
strtr() se třemí argumenty bere stringy jako pole jednotlivých bytů, což ne dobře funguje se znakový…
Wikan 14.11.2019 17:04
Wikan
dej mi příklad já už na tom trávím skoro půl dne :-)
Víťa 14.11.2019 17:50
Víťa
Na ten odkaz jsi předpokládám nekliknul.
Wikan 14.11.2019 17:53
Wikan
Pochopitelně kliknul ale nepochopil jsem to :-[ díky
Víťa 14.11.2019 17:58
Víťa
https://www.php.net/manual/en/function.strtr.php#90925
Wikan 14.11.2019 18:00
Wikan
Tato funkce převádí odstraňuje českou diakritiku to jsem pochopil ale není mi jasné její použití kdy… nový
Víťa 16.11.2019 18:04
Víťa
Je ten soubor uložený se správným kódováním? nový
Wikan 16.11.2019 18:47
Wikan
Věc se má tak: já si tu předmětnou stránku načtu do proměné ,najdu klíčové slovo nebo větu která tam… nový
Víťa 16.11.2019 19:22
Víťa
(bitově) Včera (UTF-8) = (bitově) VÄŤera (ANSI) Pracuješ s UTF-8 textem jako s ANSI textem. 56 C4 8D… nový
kacikac 16.11.2019 19:47
kacikac
Asi jsem nepochopil, co vlastně děláš. Ale mám pocit, že se jako obvykle ptáš na něco jiného, než ve… nový
Wikan 16.11.2019 20:08
Wikan
Já mám takový skript který s jedné stránky načte obsah do proměnné <?php header("Content-Type: text… nový
Víťa 21.11.2019 16:45
Víťa
Pořád tam máš to špatné použití funkce. nový
Wikan 21.11.2019 17:19
Wikan
Tak jak to opravit aby mě to vypisovalo dobře ? ta funkce strt ta pracuje jen s jedním bytem čili 0… nový
Víťa 21.11.2019 17:42
Víťa
https://stackoverflow.com/questions/1454401/how-do-i-do-a-strtr-on-utf-8-in-php nový
Henonee 21.11.2019 17:50
Henonee
Dyť tu ve vlákně máš funkci normalize, která funguje správně, akorát si tam přidej chybějící znaky,… nový
kacikac 21.11.2019 17:55
kacikac
tak tohle mi pomohlo :beer: sice jsem to upravil aby to vypisovalo i diakritiku, asi byla velká chyb… nový
Víťa 22.11.2019 13:02
Víťa
A když jsem tu funkci sem napsal poprvé, tak ti to nepomohlo? To je zajímavý... poslední
Wikan 22.11.2019 14:03
Wikan

Tato funkce převádí odstraňuje českou diakritiku to jsem pochopil ale není mi jasné její použití
když napíši


$string="Včera";
Echo normalize($string);

tak mě to pořád píše VATera

function normalize ($string) {
    $table = array(
        'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj', 'đ'=>'dj', 'Ž'=>'Z', 'ž'=>'z', 'Č'=>'C', 'č'=>'c', 'Ć'=>'C', 'ć'=>'c',
        'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E',
        'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O',
        'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss',
        'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e',
        'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o',
        'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b',
        'ÿ'=>'y', 'Ŕ'=>'R', 'ŕ'=>'r',
    );
   
    return strtr($string, $table);
} 

jak mám použít ten druhý parametr $table ?
verze PHP Version 5.6.31

Já mám takový skript který s jedné stránky načte obsah do proměnné

<?php


header("Content-Type: text/html; charset=UTF-8");

 //*****************************************************************************************

 $sta = file_get_contents('http://www.pehapko.cz/zakladni-kurz/6-promenne');
 //******************************************************************************************

$promo = (StrTr(strip_tags($sta), 'ÁÄČÇĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíňóöřšťúůüýž', 'AACCDEEEINOORSTUUUYZaaccdeeeinoorstuuuyz'));
//echo strstr($promo,"Poslední přihlášení");
//if (ereg("Poslední přihlášení",$promo)){echo hura}
$search = "Základní kurz"; 
  $pozicia = strpos($promo, $search); // zistí pozíciu kde sa nachádza $search v $promo 
  $dlzka = strlen($search); // dĺžka $search 
  $usekni_od = $pozicia + $dlzka; // odkiaľ sa má ustrihnúť $promo 
  $string = substr($promo, $usekni_od-14,50); // je možný aj tretí parameter a ten určuje aký dlhý má byť ten strih 
  $vy =trim($string,200);
  $a = substr($string,strlen($string)-37);
  $datum = date('d.m.Y H:m:s');
  $datu =" 09.05.2011 18:50:43";
  $serverden = substr($datum,0,5);
  $den = substr($a,0,5);
  //$g= normalize($a);
  //setlocale(LC_CTYPE, 'cs_CZ.UTF-8'); // bez teto radky to nefunguje
   //echo iconv("utf-8", "us-ascii//TRANSLIT", $a);
  //echo ord($a);
  //echo normalize($a);
  echo "Naposledy",StrTr($a,'ÁÄČÇĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíňóöřšťúůüýž','AACCDEEEINOORSTUUUYZaaccdeeeinoorstuuuyz');
  echo  $promo ;
  



?>

a v té proměnné najde předem definované slovo a od toho slova by to mělo vypsat text správně v zdrojovém stránce je nastavené kodování stejné
kde delá chybu? díky

Dyť tu ve vlákně máš funkci normalize, která funguje správně, akorát si tam přidej chybějící znaky, případně odeber, které nebudou potřeba.
Příklad funkčního kódu (české znaky) založený na té tvé ukázce:

<?php
$data = file_get_contents('http://www.pehapko.cz/zakladni-kurz/6-promenne');
$promo = strtr($data, array(
'Á'=>'A','Č'=>'C','Ď'=>'D','É'=>'E','Ě'=>'E',
'Í'=>'I','Ň'=>'N','Ó'=>'O','Ř'=>'R','Š'=>'S',
'Ť'=>'T','Ú'=>'U','Ů'=>'U','Ý'=>'Y','Ž'=>'Z',
'á'=>'a','č'=>'c','ď'=>'d','é'=>'e','ě'=>'e',
'í'=>'i','ň'=>'n','ó'=>'o','ř'=>'r','š'=>'s',
'ť'=>'t','ú'=>'u','ů'=>'u','ý'=>'y','ž'=>'z'));
$search = "Zakladni kurz"; 
$pozicia = strpos($promo, $search); 
$dlzka = strlen($search); 
$usekni_od = $pozicia + $dlzka; 
$string = substr($promo, $usekni_od-14,50);
$a = substr($string,strlen($string)-37);
echo $a;

Zpět do poradny Odpovědět na původní otázku Nahoru