preg_quote în PHP

Pune o bară inversă înaintea caracterelor speciale, ca un text să poată fi folosit în siguranță într-o expresie regulată.

Sintaxă
preg_quote(string $str, ?string $delimiter = null): string

Ce face preg_quote

Caracterele . \ + * ? [ ^ ] $ ( ) { } = ! < > | : - # / au sens special în expresiile regulate. Dacă pui într-un șablon un text primit de la utilizator (un termen de căutare, un nume de fișier), preg_quote le transformă în caractere obișnuite.

Dă ca al doilea parametru delimitatorul folosit în șablon (de obicei "/"), ca să fie și el protejat.

Parametri

Parametru Descriere
$str Textul de protejat.
$delimiter Opțional. Delimitatorul șablonului, protejat și el.

Ce returnează

Textul cu caracterele speciale precedate de \.

Exemple

Exemplul 1: Caracterele speciale protejate

<?php
echo preg_quote("Preț: 9.99$ (redus)") . "\n";
echo preg_quote("https://dexblog.ro/", "/");

Rezultat

Preț\: 9\.99\$ \(redus\)
https\:\/\/dexblog\.ro\/

Exemplul 2: Evidențierea unui termen căutat

Fără preg_quote, punctul din „3.5” ar însemna „orice caracter”.

<?php
$cautare = "3.5";
$text = "Versiunea 3.5 nu este 305 sau 3x5.";

echo preg_replace('/' . preg_quote($cautare, "/") . '/', "<mark>$0</mark>", $text);

Rezultat

Versiunea <mark>3.5</mark> nu este 305 sau 3x5.

Greșeli frecvente

  • Nu dai delimitatorul ca al doilea parametru și un / din text închide șablonul mai devreme. Primești avertismentul Unknown modifier.

Comenzi înrudite

  • preg_match: Verifică dacă un text se potrivește cu o expresie regulată și extrage prima potrivire.
  • preg_replace: Înlocuiește toate potrivirile unei expresii regulate cu alt text.
  • addslashes / stripslashes: Pune o bară inversă (\) înaintea ghilimelelor și a barelor inverse. stripslashes face operația inversă.