外卡问题

时间:2011-06-07 18:24:27

标签: php design-patterns wildcard eregi

我有2张外卡

  1. “PersonalBlue M. * Mat”
  2. “PersonalBlue M. * Copay。* Mat”
  3. 并且两种模式都匹配字符串“PersonalBlue M14P $ 3,500 / 80%; $ 35 Copay 4次访问; 50%Rx w / Mat”

    <?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 w / Mat”匹配,但不能与“PersonalBlue M14P $ 3,500 / 80%; $ 35 Copay 4次访问; 50%Rx w / Mat”

    什么是合适的第一张外卡?

1 个答案:

答案 0 :(得分:0)

如果我正确关注,您希望'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 MMat之间,则不会匹配。

<?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。