Непойму почему ненаходит совпадение.
$text = "Публикация присылаемой лирики, рейтинги, информация об авторах";
$as[1] = "присылаемой лирики";
$i = 1;
if(preg_match('~(?s)(?=.$as[$i])~', $text, $sovpadenie))
{
echo "есть совпадения ".$sovpadenie;
}
else
{
echo "нет совпадения ".$as[1];
}
sergeiss
6.12.2014 - 19:23
Цитата (саша28 @ 6.12.2014 - 19:16) |
if(preg_match('~(?s)(?=.$as[$i])~', $text, $sovpadenie)) |
У тебя символьная строка в одинарных кавычках, поэтому тут никаких изменений не делается. Как ты написал $as[$i], так оно и будет передано в обработку, без подстановки.
Вот так напиши эту строку (в суть самой регулярки не вникал):
'~(?s)(?=.$as[$i])~'
'~(?s)(?=.'.$as[$i].')~'
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Игорь_Vasinsky
6.12.2014 - 19:23
не вникая в паттерн, видно что он намудрён.
php не обработается в одинарных кавычках.
+ для юникода модификатор u
upd. опоздал))
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Цитата (sergeiss @ 6.12.2014 - 15:23) |
Цитата (саша28 @ 6.12.2014 - 19:16) | if(preg_match('~(?s)(?=.$as[$i])~', $text, $sovpadenie)) |
У тебя символьная строка в одинарных кавычках, поэтому тут никаких изменений не делается. Как ты написал $as[$i], так оно и будет передано в обработку, без подстановки. Вот так напиши эту строку (в суть самой регулярки не вникал): '~(?s)(?=.$as[$i])~'
'~(?s)(?=.'.$as[$i].')~'
|
Спасибо, заработало ставлю плюсик.
Всем на вооружение:
http://www.weitz.de/regex-coach/Отличная утилита, можно даже пошагово оптимизировать регулярку.
А теперь тест, что быстрее разберет вот это строку:
"некоторый текст №;%:? jdhi8"
Вот эта регулярка: "(.*)"
Или вот эта: "([^"]+)"
:lol:
Непонятно нужно ли было получать строку:
'/'.$as[$i].'/u'
Игорь_Vasinsky
6.12.2014 - 20:51
I++
ну там микросекунды.
хотя как я и сказал - паттерн - "мудрый"
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Alchemist
7.12.2014 - 15:08
I++, при отсутствии модификаторов, я бы сказал что второй паттерн будет быстрее, но не уверен на 100%
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.