Diskuze: Regulární výrazy & 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.
Ale nejsem si jist, jestli tohle je presne co potrebujes 
<?php
$sourceArray = explode(" ", "[dosbox] [download] [shop]");
$finalSource = "";
foreach($sourceArray as $source) {
$finalSource = $finalSource . '<a href="http://' . preg_replace("/[[\]]/", "", $source) .'.domena.cz">' . $source . '</a>';
}
echo $finalSource;
http://php.net/manual/en/function.preg-replace-callback.php
function next_year($matches)
{
$arr = array(
'dosbox' => '...'
);
return isset($arr[$matches[1]]) ? $arr[$matches[1]] : $matches[0];
}
$str = "[dosbox] [download] [shop]";
echo preg_replace_callback(
"~\\[([^\\]]*)\\]~", // "~\\[([^\]]*)\\]~s",
"next_year",
$str);
---
preg_replace("~\\[([^\\]]*)\\]~", "$1.domena.cz", $str);
---
http://php.net/manual/en/function.str-replace.php
Example #2 Examples of potential str_replace() gotchas
$letters = array('a', 'p');
$fruit = array('apple', 'pear');
$text = 'a p';
$output = str_replace($letters, $fruit, $text);
echo $output;
http://php.net/manual/en/function.preg-replace.php
Example #2 Using indexed arrays with preg_replace()
$string = 'The quick brown fox jumps over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string);
---
rob at ubrio dot us 11 years ago
$subs = array(
'/\[b\](.+)\[\/b\]/Ui' => '<strong>$1</strong>',
'/_(.+)_/Ui' => '<em>$1</em>'
...
...
);
$raw_text = '[b]this is bold[/b] and this is _italic!_';
$bb_text = preg_replace(array_keys($subs), array_values($subs), $raw_text);
---
da_pimp2004_966 at hotmail dot com 10 years ago
function AddBB($var) {
$search = array(
'/\[b\](.*?)\[\/b\]/is',
'/\[i\](.*?)\[\/i\]/is',
'/\[u\](.*?)\[\/u\]/is',
'/\[img\](.*?)\[\/img\]/is',
'/\[url\](.*?)\[\/url\]/is',
'/\[url\=(.*?)\](.*?)\[\/url\]/is'
);
$replace = array(
'<strong>$1</strong>',
'<em>$1</em>',
'<u>$1</u>',
'<img src="$1" />',
'<a href="$1">$1</a>',
'<a href="$1">$2</a>'
);
$var = preg_replace ($search, $replace, $var);
return $var;
}
To je skoro vsechno primo ze stranek dokumentace k te funkci. Musel jsi to prehlednout.
# (^|\s)([+[a-z0-9_-]+])*) # is
^ | \s = zacatek $str nebo mezera - ok
pak tam mas nejaky podivny pocet zavorek ( ... ) * )
pak tam mas podivny pocet hranatych zavorek
[znaky] - je seznam znaku
[+[a-z0-9_-] - je seznam znaku a to: + or [ or a-z or 0-9 or _ or -
a dal tam mas prave nesmysl, ktery nedava smysl, zavorky v jakemsi nesmyslnem poradi
])*)
[+[a-z0-9_-] - jakoze hrana zavorka uvnitr otevrene hranate je pripustna, cili, takto je to platny vyraz
[+[a-z0-9_-]+] - ale takhle je to nesmysl, je to chapano takto ( +[a-z0-9_- )+ ]
Pokud tam chces dat skutecne zavorku, musi to byt s lomitkem nebo se dvema a nebo v zavorce
\[ nebo \\[ nebo [[] (to posledni, zavorka v otevrene hranate je pripustna, ale opacna uz ne, protoze ta zavorku uzavira)
\] nebo \\] nebo ] (to posledni je vyjimecny pripad)
\[ a \] je take vyjimecny pripad. Jestli to funguje zalezi tusim na pouzitych uvozovkach ' a ". Kdezto se dvema \\ by to melo fungovat vzdy.
Díky moc za radu. Zkoušel jsem to aplikovat a funguje to, ale není to úplně ono. Vkládám to do komplexnějšího PHP kódu a tam už to nedělá to, co potřebuji. Každopádně si moc vážím tvé rady a jsem rád za tvojí pomoc. Ještě jednou díky...
Díky!
Tohle jsem trochu upravil a funguje to!
preg_replace("~\\[([^\\]]*)\\]~", "$1.domena.cz", $str);
Zobrazeno 8 zpráv z 8.