NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 15 - Funkce pro práci s řetězci v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Outsider
Člen
Avatar
Outsider:10.3.2021 16:39

Já to mám obráceně s "mb_". :D Mě mb_strlen() spočítá "Černé díry jsou tam, kde bůh dělil nulou." jako 33 znaků. Pokud vyměním písma s čárkama a háčky za ty bez, je to v pořádku. Udá mi 40 znaků. Strlen() mi funguje správně... :/

 
Odpovědět
10.3.2021 16:39
Avatar
Outsider
Člen
Avatar
Outsider:16.3.2021 0:39

Vážně nikdo netuší ? :/ Asi takhle, funkce s "mb_" prefixem mi nejdou za to bez něho je to bez problému.

 
Odpovědět
16.3.2021 0:39
Avatar
t.teichmanova:3.4.2021 17:45
Ahoj, tak jsem se opět pokusila o nějaký prográmek. Vím, že pro práci s řetězci je asi více funkcí. Ty, které považuju za za základní, jsem dala 'pod jednu střechu'. No je to jenom pokus.

Můj zdroják :

1. StringFce.html

<!DOCTYPE html>
<html lang="sk">
 <head>
 <meta charset="UTF-8">
 <title>ciselne soustavy</title>
 </head>
 <body>

 <form method="POST" action="CaseString.php">
 <h3><b><i>Práce s řetězci</i></b></h3>
 <hr>
 <b>Zadaný řetězec: </b><input name="string" type="string"   style="width: 500px;" /><br /><br />
 <select name="operace">
 <option value="strlen">Délka řetězce</option>
 <option value="wordcount">Počet slov v řetězci</option>
 <option value="strrev">Obrácený řetězec</option>
 <option value="strpos">Pozice slova  v řetězci</option>
 <option value="replace">Nahrazení slova v řetězci</option>

 </select><br /><br />
 <input type="submit" value="Výpis" />
 </form>

 </body>
</html>

2.CaseString.php

 <?php

 $string = $_POST['string'];
 $operace = $_POST['operace'];

 switch ($operace)
{
 case 'strlen':
   echo "Délka řetězce: ". strlen("string"). "<br>";
 break;

 case 'wordcount':
   echo "Počet slov v řetězci: " .str_word_count(" $string") . "<br>";
 break;

  case 'strrev':
   echo "Obrácený řetězec: " .strrev(" $string")."<br>";
 break;

 case 'strpos':
   echo "Pozice slova  v řetězci: ". strpos(" $string"). "<br>";
 break;

  case 'replace':
   echo "Nahrazení slova v řetězci: ".str_replace("$string"). "<br>";
 break;
 }

 ?>
 
Odpovědět
3.4.2021 17:45
Avatar
t.teichmanova:3.4.2021 18:38
Ahoj dnes podruhé. Trochu jsem upravila miniprogram pro výpis čísel pomocí 'explode',
což se ve vašem prográmku neprojeví a následně součet zadaných čísel.

<?php
mb_internal_encoding("UTF-8");
$vstup = "1,5,87,65,42,4,456,8,5,98,54,89";
$cisla = explode(',', $vstup);

echo "Výpis čísel: ".$vstup."<br>";
echo "Součet čísel: " .array_sum($cisla);
?>
 
Odpovědět
3.4.2021 18:38
Avatar
Dušan Kovářík:1.7.2021 7:23

Parádní článek, díky :) Všechno důležité stručně, jasně a dokonce si ty názvy funkcí i pamatuju :D

 
Odpovědět
1.7.2021 7:23
Avatar
Jaromír Volko:8.3.2022 22:41

Podle mého názoru by měl být výraz:

Získali jsme podřetězec od 9. znaku, dlouhý 7 znaků.

ve skutečnosti:

Získali jsme podřetězec od 10. znaku, dlouhý 7 znaků.

Asi jste zapomněli na 0

 
Odpovědět
8.3.2022 22:41
Avatar
Jan Štěch
Člen
Avatar
Jan Štěch:3.8.2022 10:49

V zastaralých učebnicích a tutoriálech naleznete použití funkcí bez prefixu mb_. Tedy místo mb_strlen() jen strlen(). Tyto funkce nikdy nepoužívejte, jelikož neumí UTF-8 a budou vám vracet špatný výstup.

Tohle kategorické odmítnutí mi nepřijde úplně moudré. strlen() má svůj význam i u multibyte stringů, jelikož vrací informaci o tom, kolik bajtů zabírá daný řetězec v paměti. Ačkoliv při práci s řetězcem v PHP skutečně chcete vidět všechny české znaky jako jeden znak, při ukládání řetězců do databáze je potřeba dávat pozor na velikost řetězce a ne jeho délku. Například pokud máme pole "jmeno" typu VARCHAR a nastavenou velikostí 15, mb_strlen() nám o řetězci "Štěpán Novotný" poví, že je dlouhý 14 znaků a my nabydeme domění, že se do databázového pole vejde. Nicméně při kódování ASCII má jmeno 18 bajtů a v databázi se tak uloží jenom "Štěpán Novot".

 
Odpovědět
+1
3.8.2022 10:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 17.