正規表現はあまり得意ではありません。誰かがこれを手伝ってくれますか?
$string = '1,2,3,4,7,8,10,11,14,17,18,19,22,23,26,29,30';
preg_match('/(\d*,*)(2,)(\d*,*)(4,)(\d*,*)(8)/', $string);
この文字列は常に文字列である必要があり、配列などにすることはできません。番号2、4、8(18ではない)を探しているとしましょう。PHPとpreg_match
関数を使用しています。
正規表現はあまり得意ではありません。誰かがこれを手伝ってくれますか?
$string = '1,2,3,4,7,8,10,11,14,17,18,19,22,23,26,29,30';
preg_match('/(\d*,*)(2,)(\d*,*)(4,)(\d*,*)(8)/', $string);
この文字列は常に文字列である必要があり、配列などにすることはできません。番号2、4、8(18ではない)を探しているとしましょう。PHPとpreg_match
関数を使用しています。
配列を使用したソリューションは次のとおりです。
// explode a string to array of numbers
$haystack = explode(',', $string);
// define numbers to search
$needle = array(2,4,48);
// define found elements
$found = array_intersect($needle, $haystack);
// print found elements
if ($found) {
print 'Found: ' . implode(',', $found);
}
preg_match を使用したソリューション:
// add "," to the beginning and string end
$string = ",$string,";
// define pattern to search (search for 14, 19 or 20)
$pattern = '/,14|19|20,/';
// if pattern is found then display Hello
if (preg_match($pattern, $string)) {
print 'Hello';
}
単純:
<?php
$string = '1,2,3,4,7,8,10,11,14,17,18,19,22,23,26,29,30';
$search = array(2, 4, 8);
$parts = explode(",", $string);
array_flip($parts);
foreach($search as $n){
if(isset($parts[$n])){
echo ("found ".$n."<br/>");
}
}
?>
編集: シンプルな「ハック」で、「簡単な」preg_match() を使用できるようになりました:
<?php
$string = '1,2,3,4,7,8,10,11,14,17,18,19,22,23,26,29,30';
$string = ','.$string.',';
$search = array("2", "4", "8");
foreach($search as $n){
if(preg_match("#,$n,#", $string)){
echo "found $n <br/>";
}
}
?>
$string = '1,2,3,4,7,8,10,11,14,17,18,19,22,23,26,29,30';
$search = array('2', '4', '8'); # or $search = explode(',', '2,4,8');
foreach($search as $number)
if (strpos($string, $number) === false)
echo $number, ' not found!';
ある文字列が別の文字列に含まれているかどうかのみを確認する場合は、preg_match() を使用しないでください。代わりに strpos() または strstr() を使用してください。