2017-11-10 9 views
1

私は、テキストとパターンの配列を持っています。私はパターンの配列内のすべてのパターンのテキストの配列内の各要素を検索しようとしています。しかし、私は以下のエラーが発生していると私はどこに間違っているのか分からない。preg_match - パターンの配列を使用する - PHP

$participantVcRoomName = '/PR GMVC RP K GRAY/i'; 
$sipURI = '/+13135539892/i'; 
$row = '¤¤AdhocCallAdded¤¤[email protected]'; 
$row2 = '¤¤SentMessageToSystem¤¤The conference was extended, the new end time 
is: 10:45 AM¤¤PR GMVC RP K GRAY'; 
$row3 = '¤¤ConferenceEndTimeChanged¤¤09/13/2017 15:30:00 -05:00¤¤09/13/2017 
10:30:00 -05:00'; 

$arrayDescp = [$row, $row2, $row3]; 
$arrayPatterns = [$participantVcRoomName, $sipURI]; 

foreach($arrayDescp as $target){ 

    foreach($arrayPatterns as $aPattern){ 

     $match = preg_match($aPattern, $target); 
     if($match){ 
      echo 'match<br>'; 
     }else{ 
     echo 'no match<br>'; 
     } 

    } 
} 

エラーメッセージ:

preg_match(): Compilation failed: nothing to repeat at offset 0 

答えて

0

+は、正規表現で特殊文字、1またはそれ以上を意味する数量詞です。そしてその量指定子の前に文字(-set)がないので、これはデリミタの後の正規表現の最初のエンティティです。そのエラーが発生します。

あなたがlitteral +を一致させたい場合は、それをエスケープする必要があります:

$sipURI = '/\+13135539892/i'; 
      ^^ a literal `+` 

An example

0

あなたが確認するように配列のインデックスを指定されていません。以下に、あなたのコードを置き換えます

$participantVcRoomName = '/PR GMVC RP K GRAY/i'; 
$sipURI = '/+13135539892/i'; 
$row = '¤¤AdhocCallAdded¤¤[email protected]'; 
$row2 = '¤¤SentMessageToSystem¤¤The conference was extended, the new end 
time 
is: 10:45 AM¤¤PR GMVC RP K GRAY'; 
$row3 = '¤¤ConferenceEndTimeChanged¤¤09/13/2017 15:30:00 -05:00¤¤09/13/2017 
10:30:00 -05:00'; 

$arrayDescp = [$row, $row2, $row3]; 
$arrayPatterns = [$participantVcRoomName, $sipURI]; 
$t=0; 
foreach($arrayDescp as $target){ 

foreach($arrayPatterns as $aPattern){ 

    $match = preg_match($aPattern, $target[$t]); 
    if($match){ 
     echo 'match<br>'; 
    }else{ 
    echo 'no match<br>'; 
     } 

    } 
$t++; 
} 
関連する問題