2010-11-29 15 views

答えて

2

2つの数字の存在を確認する必要がある場合は、より高速のstrposを使用してください。

if(strpos($mystring, '|7|') !== FALSE AND strpos($mystring, '|11|') !== FALSE) 
{ 
    // Found them 
} 

または自由のための正規表現をテストするために数

preg_match('/\|(7|11)\|/', $mystring, $match); 

使用regexpalをキャプチャするために低速の正規表現を使用しました。あなたが本当に(私はXeoncross'答えのように、strposをお勧めしていても)preg_matchを使用したい場合は

+0

17、27、71および111、211及び114のような数字がいくつか – Yeroon

+0

感謝に名前を付けるためにこれもTRUEを返します、これははるかに簡単な方法です動作します! – ITg

+1

@ Yeroonああ、ちょうどパイプのcharを忘れてしまった。 – Xeoncross

0

、これを使用する:

strpos($string, '|'.$number.'|')); 
if (preg_match('/\|(7|11)\|/', $string)) 
{ 
    //found 
} 
+0

明確にするために、例えば、(7 | 11 | 13)に '(7 | 11)'を置き換えて、7,11,13にマッチさせることができます。 – cambraca

0

は、あなたの文字列が常に起動し、 |で終わると仮定すると、
17

\bを式の前後に使用すると、単語全体としてのみ一致します。

$str1 = 'foo bar';  // has matches (foo, bar) 
$str2 = 'barman foobar'; // no matches 

$test1 = preg_match('/\b(foo|bar)\b/', $str1); 
$test2 = preg_match('/\b(foo|bar)\b/', $str2); 

var_dump($test1); // 1 
var_dump($test2); // 0 

だからあなたの例では、それは次のようになります。

$str1 = '|1|77|111|'; // has matches (1) 
$str2 = '|01|77|111|'; // no matches 

$test1 = preg_match('/\b(1|7|11)\b/', $str1); 
$test2 = preg_match('/\b(1|7|11)\b/', $str2); 

var_dump($test1); // 1 
var_dump($test2); // 0 
関連する問題