Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не получается экранировать бэк слэш \
Форумы портала PHP.SU » PHP » Регулярные выражения » Не получается экранировать бэк слэш \

Страниц (1): [1]
 

1. BlazE - 16 Ноября, 2008 - 02:12:34 - перейти к сообщению
Здравствуйте. Улыбка
Пишу скрип для работы со ссылками. Возникла необходимость использования регулярных выражений. При этом столкнулся с проблемой: не получается экранировать бэк слэш \.

Все целиком регулярное выражение писать не буду. Опишу проблему на следующем элементарном примере:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $html = "text \text\ text";
  3. preg_match_all("/\\/", $html, $matches);
  4. echo $matches[0][0] . "<br>\n";
  5. echo $matches[0][1] . "<br>\n";
  6. ?>

Ищем все вхождения бэк слэша \ в строку $html и результат заносим в массив $matches. Затем делаем вывод. По идее, все сделано правильно (теория говорит: экранируем \\ ) и должно работать, но выдает ошибку:
CODE (text):
скопировать код в буфер обмена
  1. Warning: preg_match_all() [function.preg-match-all]: No ending delimiter '/' found in Z:\home\localhost\www\php\script.php on line 51

Пробовал различные варианты записи, писал непосредственно код бэк слэша (преобразовывал с помощью chr() и ord()) и присоединял при помощи конкатенации к регулярному выражению и т.п. Ничего не помогло Недовольство, огорчение
Кроме того, если искать здесь просто слэш / , то все работает. (Т.е. preg_match_all("/\//", $html, $matches); )
В чем тут может быть проблема? Помогите, пожалуйста. Улыбка
2. BlazE - 16 Ноября, 2008 - 14:12:20 - перейти к сообщению
Проблему решил.
CODE (text):
скопировать код в буфер обмена
  1. preg_match_all("/\\\\/", $html, $matches);

 

Powered by ExBB FM 1.0 RC1