[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: простейшая строковая переменная
саша28
Непойму почему ненаходит совпадение.
$text = "Публикация присылаемой лирики, рейтинги, информация об авторах";
$as[1] = "присылаемой лирики";
$i = 1;
if(preg_match('~(?s)(?=.$as[$i])~', $text, $sovpadenie))
{
echo "есть совпадения ".$sovpadenie;
}
else
{
echo "нет совпадения ".$as[1];
}
sergeiss
Цитата (саша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, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Игорь_Vasinsky
не вникая в паттерн, видно что он намудрён.

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
саша28
Цитата (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].')~'

Спасибо, заработало ставлю плюсик.
I++
Всем на вооружение: http://www.weitz.de/regex-coach/
Отличная утилита, можно даже пошагово оптимизировать регулярку.

А теперь тест, что быстрее разберет вот это строку:

"некоторый текст №;%:? jdhi8"


Вот эта регулярка: "(.*)"
Или вот эта: "([^"]+)"

:lol:

Непонятно нужно ли было получать строку:

'/'.$as[$i].'/u'
Игорь_Vasinsky
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
I++, при отсутствии модификаторов, я бы сказал что второй паттерн будет быстрее, но не уверен на 100%
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.