Не сохр. результат в preg_macth()

bbv

Guest
Не сохр. результат в preg_match()

Проблемка:

PHP:
$str=”uasdfasd {-a} <{k7}_ saf {NAME} <!-- name -->”;  
if (preg_match('\<!-- [a-zA-Z0-9\_]+ -->\', $str, $val))  
{  
echo $val[0];  
}
Соответствие находит, а результат не сохраняет! В чем ошибка?? Экранирование символов не помогает – по идеи проблема в рядом стоящих < и !
Что сделать то можно?
 

SelenIT

IT-лунатик :)
Соответствие находит, а результат не сохраняет!
Как ты это выяснил? Приведенного кода, имхо, для этого недостаточно...
1) http://www.php.net/pcre
Выражение должно быть заключено в ограничители, например, прямые слеши '/'. Ограничителем могут выступать произвольные символы, кроме буквенно-цифровых и обратного слеша '\'.
2) что за странные "левые" кавычки в первой строке?
 

bbv

Guest
Автор оригинала: SelenIT
Как ты это выяснил? Приведенного кода, имхо, для этого недостаточно...
Нахождение соответствия проверяет if . Во-вторых я пытался делать поиск для "<!", и много другое - проблема оказалась имменно в рядом стоящих символах '<' и '!'. Их экранизация слешами не помогает!!

2) что за странные "левые" кавычки в первой строке?
Выражение должно быть заключено в ограничители, например, прямые слеши '/'. Ограничителем могут выступать произвольные символы, кроме буквенно-цифровых и обратного слеша '\'.
При вводе темы опечатки сделал:
PHP:
$str="uasdfasd {-a} <{k7}_ saf {NAME} <!-- name -->"; 
if (preg_match('/<!-- [a-zA-Z0-9\_]+ -->/', $str, $val))  
{  
echo $val[0];  
}
Если исключить знак '!' из строки и шаблона поиска, то всё работает, но этот знак необходим.
Так что сделать?
 

bbv

Guest
при нахождении
PHP:
<!-- name -->
при не нахождении по идеи ничего, так как $var[0] - должно иметь полностью совпавшую подстроку.

-~{}~ 22.06.05 20:34:

Повторюсь:
если делать следующее

PHP:
$str="uasdfasd {-a} <{k7}_ saf {NAME} <-- name -->";  
 if (preg_match('/<-- [a-zA-Z0-9\_]+ -->/', $str, $val))     
{     
echo $val[0];     
}
то результат сохранится, он будет "<-- name -->"
 

bbv

Guest
Лучше предложи свой вариант шаблона для поиска подстрок следующего типа:
"<!-- X -->", где х - строка, состоящая из символов a-ZA-Z0-9_

-~{}~ 22.06.05 20:47:

Автор оригинала: Фанат
тогда как ты определил-то, что находит, но не сохраняет?
Функция preg_match() возвращает количество найденных соответствий. Это может быть 0 (совпадения не найдены) и 1, поскольку preg_match() прекращает свою работу после первого найденного совпадения.
 

SelenIT

IT-лунатик :)
bbv
Не пудри людям мозги. Твой исправленный пример прекрасно работает.
 

bbv

Guest
Блин, вот гадство - это же есть комментарий :) :)
 
Сверху