Праблема адваротнага слэша ў PHP
Адваротны слэш з'яўляецца спецсімвалам PHP. Гэта значыць, што ў радку, калі мы хочам, каб слэш абазначаў сам сябе, мы павінны яго падвоіць:
<?php
$str = '\\ \\\\ \\\\\\'; // на самай справе радок '\ \\ \\\'
?>
Адваротны слэш таксама з'яўляецца і спецсімвалам рэгулярак. Гэта значыць, што ўнутры рэгуляркі, каб слэш абазначаў сам сябе, яго трэба напісаць аж чатыры разы:
<?php
echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // выведзе '! ! !!'
?>
Давайце цяпер напішам рэгулярку, у якой
шаблон пошуку будзе такі: адваротны слэш
адзін або больш разоў. У такім выпадку мы
напішам аператар + аж для 4
сімвалаў перад ім без групоўкі:
<?php
echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); // выведзе '! ! !'
?>
Дадзены радок:
<?php
$str = 'a\\b c\\d e\\f';
?>
Знайдзіце ў гэтым радку ўсе падрадкі па шаблоне літара, адваротны слэш, літара.
Дадзены радок:
<?php
$str = 'a\\b c\\\\d e\\\\\\f';
?>
Знайдзіце ў гэтым радку ўсе падрадкі па шаблоне літара, адваротны слэш любую колькасць разоў, літара.