Проблема с подстановочной картой

#php #wildcard

#php #подстановочный знак

Вопрос:

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

  1. «PersonalBlue M.*Mat»
  2. «PersonalBlue M.* Copay.*Mat»

и оба шаблона совпадают со строкой «PersonalBlue M14P $ 3500 / 80%; Доплата 35 долларов за 4 посещения; 50% Rx без мата»

 <?php

eregi('PersonalBlue M.*Mat', 'PersonalBlue M14P $3,500/80%; $35 Copay 4 Visits; 50% Rx w/Mat', $matches);

eregi('PersonalBlue M.*Copay.*Mat', 'PersonalBlue M14P $3,500/80%; $35 Copay 4 Visits; 50% Rx w/Mat', $matches2);

echo "<br>";
echo strlen ($matches[0]);
echo "<br>";
echo strlen ($matches2[0]);

?>
  

Длина совпадающей строки одинакова для обоих. Мне нужно, чтобы первая подстановочная карта совпадала со строкой «PersonalBlue M09P $ 2,500 / 80%; 50% Rx без мата», но не с «PersonalBlue M14P $ 3,500 / 80%; Доплата 35 долларов за 4 посещения; 50% Rx без мата».

Какая будет подходящая первая подстановочная карта?

Комментарии:

1. eregi O_O разве они там не спамят много УСТАРЕВШЕГО? XD

2. @yes123: Только если у вас нет сломанной среды разработки.

Ответ №1:

Если я правильно понимаю, вы хотите 'PersonalBlue M14P $3,500/80%; $35 Copay 4 Visits; 50% Rx w/Mat' только сопоставлять 'PersonalBlue M.*Copay.*Mat' , а не сопоставлять что-то вроде 'PersonalBlue M.*Mat' .

Если 'PersonalBlue M.*Mat' изменить на 'PersonalBlue M.*(^Copay).*Mat' , это не будет соответствовать, если Copay находится между PersonalBlue M и Mat .

 <?php

eregi('PersonalBlue M.*(^Copay).*Mat', 'PersonalBlue M14P $3,500/80%; $35 Copay 4 Visits; 50% Rx w/Mat', $matches);

eregi('PersonalBlue M.*Copay.*Mat', 'PersonalBlue M14P $3,500/80%; $35 Copay 4 Visits; 50% Rx w/Mat', $matches2);

echo "<br>";
echo strlen ($matches[0]); // outputs 0
echo "<br>";
echo strlen ($matches2[0]); // outputs 62

?>
  

Как указал @yes123, eregi устарел, и вместо этого вы можете захотеть посмотреть на preg_match.

Комментарии:

1. я использую этот шаблон. ‘PersonalBlue M.* (^ Доплата).*Mat’ не совпадает со строкой ‘PersonalBlue M14P $ 3500 / 80%; Доплата 35 долларов за 4 посещения; 50% Rx без мата’ и ‘PersonalBlue M09P $ 2500 / 80%; 50% Rx без мата’ тоже. я хочу, чтобы этот шаблон совпадал с ‘PersonalBlue M09P $ 2,500 / 80%; 50% Rx без мата’

2. Да, вы абсолютно правы. Извините, я неправильно прочитал вопрос и в основном отклонился от вашего примера кода. Однако мне не так повезло с ответом на вторую часть. Вопрос, однако, ваша целевая строка всегда разделяется точкой с запятой, не могли бы вы сделать разделение или вам нужно использовать регулярное выражение?