Diskuze: preg_replace
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 8 zpráv z 8.
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.


Nějak přesně nevím o co ti jde, ale pokud to potřebuješ převést na entity, tak k tomu se používá funkce htmlentities.
v manuálu ( http://php.net/…entities.php ) je na to celkem pěkný example.
jj to je celkem jedno co na to použiji, ale já to tam potřebuji nějak
doplnit 
Nebo ještě jinak - chci udělat něco jak je tady na devbooku - [ code ] a [/ code ]. Na netu jsem si našel (a upravil)
$search = "/\[code\](.*?)\[\/code\]/is";
$replace = "<code>$1</code>";
$source = "Lorem ipsum
<strong>Ahoj</strong>
lorem ipsum";
$result = preg_replace ($search, $replace, $source);
echo($result);
\---
Jak mám escapovat to $1 ?
Menší překlep 
$search = "/\[code\](.*?)\[\/code\]/is";
$replace = "<code>$1</code>";
$source = "Lorem ipsum [code ]<strong>Ahoj</strong>[/ code] lorem ipsum";
$result = preg_replace ($search, $replace, $source);
echo($result);
Asi bych si ten string nejprve rozebral na tokeny a ty teprve zpracoval automatem
<?php
$str="Text na začátku<code>nějakej zdroják</code>Text uprostřed<code>
druhý zdroják</code>Text na konci";
$arr=preg_split('/(<code>|<\/code>)/', $str, null, PREG_SPLIT_DELIM_CAPTURE);
print_r($arr);
Mohl by jsi mi to prosím napsat celé, tomuto vůbec nerozumím 
Pokud sis to spustil, tak jsi dostal něco takového:
Array
(
[0] => Text na začátku
[1] => <code>
[2] => nějakej zdroják
[3] => </code>
[4] => Text uprostřed
[5] => <code>
[6] => druhý zdroják
[7] => </code>
[8] => Text na konci
)
Teď už jen ten seznam projít a vygenerovat výstup:
$out=array();
$stav=0;
foreach ($arr as $token) {
switch ($stav) {
case 0:
if ($token=='<code>') {
$stav=1;
}
$out[]=$token;
break;
case 1:
if ($token=='</code>') {
$stav=0;
$out[]=$token;
} else {
$out[]=htmlspecialchars($token);
}
break;
}
print_r($out);
echo implode('', $out);
V téhle podobě to sice nezvládne vnořené <code>, ale
zvládne to víc úseků za sebou. Na vnořené elementy bys musel použít
rekurzi nebo zásobník.
Zobrazeno 8 zpráv z 8.