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 :: Версия для печати :: Переменные в regexp
Форумы портала PHP.SU » PHP » Регулярные выражения » Переменные в regexp

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

1. kerfi - 10 Декабря, 2009 - 14:10:45 - перейти к сообщению
Можно ли использовать переменную в регулярных выражениях возможностями PHP?
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $str            = 'abcdef';
  3. $sub_str        = 'abc';
  4. preg_match("/\$sub_str/", $str); //Не работает


ps: это нужно для реализации задачи: проверить есть ли линка на сайте в формате:
CODE (text):
скопировать код в буфер обмена
  1. <a href="$url">$desc</a>
2. Мелкий - 10 Декабря, 2009 - 14:23:51 - перейти к сообщению
А зачем вы $ экранируете?
preg_match("/$sub_str/", $str);
так находит.
3. kerfi - 12 Декабря, 2009 - 22:51:05 - перейти к сообщению
Мелкий пишет:
А зачем вы $ экранируете?
preg_match("/$sub_str/", $str);
так находит.


Нет не находит конечно. $ - в регулярных выражениях это конец строки.
Решение:
CODE (text):
скопировать код в буфер обмена
  1.  
  2.  
  3. preg_match("/". $sub_str."/", $str);
  4.  
4. Champion - 13 Декабря, 2009 - 09:37:21 - перейти к сообщению
kerfi пишет:
Нет не находит конечно. $ - в регулярных выражениях это конец строки.
Нет, находит. Потому что никакого $ в строке не будет. Сначала PHP подставит в строку переменную, потом то, что получится, отдаст на съедение preg_match.

 

Powered by ExBB FM 1.0 RC1