Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Регулярное выражение
walters  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 184
Пользователь №: 24757
На форуме: 6 лет, 26 дней
Карма: 1




Всем привет, долго искал но не нашел ответа, либо я его не понял.

Помогите пожалуйста разобраться.

есть шаблон поиска и сама строка.

изначально я вывожу из строки данные в скобках соответственно ид(12)

ниже сверяю есть ли совпадение результата шаблона с самой строкой.

но по какой то причине он по идее должен выдать что нет совпадений так как у нас в строке нет данных с ид (12) (12[1,2,3])

а скрипт выдает что есть совпадения. но как видите в строке нет данных с таким ид.

после того как вывел на экран $matches[0] понял что он выдает данные последнему результату по моему шаблону, если я искал 12[4,6] и он не нашел он выдает последний результат те 11[4,6].

$pattern ='/[12]{2}\[(.*?)\]/';    // Шаблон поиска в формате ид[список ид]

preg_match($pattern,"9[3],10[2],11[4,6]", $matches);

if(strpos("9[3],10[2],11[4,6]", "$matches[0]") !== false){
echo 'Есть совпадения';
}
else{
echo 'Нет совпадений';
}
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25980
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 20 дней
Карма: 725

Не курю:
1 год, 2 месяца, 6 дней


покажи исходную строку и что ты в ней хочешь найти.
нихера не понятно.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walters  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 184
Пользователь №: 24757
На форуме: 6 лет, 26 дней
Карма: 1






$pattern ="/[12]{2}\[(.*?)\]/"; // Шаблон поиска в формате ид[список ид]

$string = "9[3],10[2],11[4,6]"; // Строка


preg_match($pattern, $string, $matches);

echo $matches[0] выдаст 11[4,6], хотя $pattern ищет 12[*]



PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Можете кто то подправить или рассказать в чем проблема ?
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 1 день
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Всё, что в квадратных скобках - это перечень. Если там [12]{2}, то это совсем не обязательно 12. Может и 11 и 22 и 21 быть.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walters  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 184
Пользователь №: 24757
На форуме: 6 лет, 26 дней
Карма: 1




а как будет правильно ?

мне например из строки нужно отобрать 12[1,2,3]

и именно с цифрой 12, ибо это у меня переменная цифра может менятся,

и если результат нету что бы выводило хотя бы false
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
netruxa  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 472
Пользователь №: 4715
На форуме: 8 лет, 8 месяцев, 2 дня
Карма: 19




не надо 12 заключать в скобки
вот так будет искать норм:

$pattern ="/12\[(.*?)\]/";


--------------------
ввв.парсер.рф - онлайн система проверки позиций Вашего сайта в поисковиках. Для форумчан 100 рублей на счет.
PMСайт пользователя
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walters  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 184
Пользователь №: 24757
На форуме: 6 лет, 26 дней
Карма: 1




Спасибо netruxa,twin
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Все отлично работает но есть одна неувязочка, прошу вашего совета


$pattern ="/10\[(.*?)\]/"; // Шаблон поиска в формате ид[список ид]

$string = "9[3],10[2],11[4,6]"; // Строка


preg_match($pattern, $string, $matches);


if(isset($matches[0]))
{
echo $matches[0]; // выдаст 10[2]
}


а если в $pattern поменять число с 10 на 0 выдаст тот же результат, посоветуйте как с этим боротся
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walters  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 184
Пользователь №: 24757
На форуме: 6 лет, 26 дней
Карма: 1




то есть можно как то в шаблоне
$pattern ="/10\[(.*?)\]/";  


как то сказать что до 10 может быть либо ',' либо 'ничего'.

PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 1 день
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Цитата (walters @ 17.05.2016 - 12:06)
как то сказать что до 10 может быть либо ',' либо 'ничего'.

Так и сказать. smile.gif
,*


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walters  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 184
Пользователь №: 24757
На форуме: 6 лет, 26 дней
Карма: 1





$pattern ="/,*0\[(.*?)\]/";


Все ровно результат от 10-тки 0[2]
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 1 день
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Конечно не будет работать. Потому что запятая тут вообще не при делах. Нужно смотреть, есть ли слева цифра. Ну вот так примерно:
$pattern ="/(?<!\d)0\[(.*?)\]/";


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walters  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 184
Пользователь №: 24757
На форуме: 6 лет, 26 дней
Карма: 1




Спасибо !
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса