Znak $ v regulárním výrazu

Znak dolaru ($) má v regulárních výrazech zvláštní význam. Značí konec řetězce nebo konec řádku.

Zapsat na české klávesnici jde klávesovou zkratkou Pravý Alt + ů.

V případě, že je cílem najít v textu něco s dolarem, nabízí se znak $ escapovat (\$).

$vysledek = preg_match("~\$~", "0.50 $"); // true

Výsledek bude dle očekávání kladný. Když znak dolaru v testovaném řetězci nebude, měl by výsledek vrátit false.

$vysledek = preg_match("~\$~", "0.50 €"); // true

Jenže vrací také true. Proč? PHP řetězce v dvojitých uvozovkách zpracovává tak, že se escapování dolaru vypustí. Domnívám se, že je to z toho důvodu, že dolar má v ouvozovkovaném řetězci význam jako označení případné proměnné.

$promenna = "kobercovka";
echo "Vypisuji $promenna"; // Vypisuji kobercovka
echo "Vypisuji \$promenna"; // Vypisuji $promenna

A to escapování se před předání do funkce preg_match ztratí.

Řešení je naštěstí prosté, používat v regulárních výrazech jednoduché uvozovky.

$vysledek = preg_match('~\$~', "0.50 €"); // false
$vysledek = preg_match('~\$~', "0.50 $"); // true

A nebo přidat další zpětné lomítko pro escapování dolaru.

$vysledek = preg_match("~\\$~", "0.50 €"); // false

Odkazy jinam

  • Uvozovky v PHP – rozdíl mezi jednoduchými a dvojitými uvozovkami

To je všechno. Líbil se vám článek a chcete se dozvědět, až vyjde další?

Sledujte:

 

Připomínky mi pište do komentářů ↓

PHP proxy skript

PHP proxy skript na 50 řádků

Hotový PHP skript umožňující zobrazit web prostřednictvím jiné IP adresy.

Generování PDF

Generování PDF

Vytváření PDF dokumentů v JavaScriptu a PHP.

Složení jednoduchého webu v PHP

Jednoduchý web v PHP

I web o pár stránkách je vhodné skládat automatisovaně. Jak na to v PHP?

Stažení cizí stránky

Získání obsahu cizí stránky

Jak v PHP a JavaScriptu získat obsah z cizí webové stránky.

Parsování HTML v PHP

Parsování HTML v PHP

Jak v PHP parsovat HTML stránku a získat z ní potřebná data.

Komentáře