Bir dize belirli bir numara içeriyorsa edin

5 Cevap php

Ben bir dize var

8,7,13,14,16

Nedir, belirli bir sayı bu dizede mevcut olup olmadığını belirlemek için en kolay yolu nedir?

$numberA = "13";
$string = "8,7,13,14,16";

if($string magic $numberA){
$result = "Yeah, that number is in there";
} else {
$result = "Sorry.";
}

Sihirli arıyor.

5 Cevap

<?php 
in_array('13', explode(',', '8,7,13,14,16'));
?>

... '13 'Dize olup olmadığını dönecektir.

Sadece ayrıntılı: patlayabilir, bu durumda, 'her azından bölme, bir diziye dize döner. Dize '13 'bir yere çıkan dizide ise o zaman, çek in_array.

Başka bir yol, bir regexpi kullanıyor, laaaaaaaarge dizeleri için daha verimli olabilir:

$numberA = "13";
$string = "8,7,13,14,16";

if(preg_match('/(^|,)'.$numberA.'($|,)/', $string)){
    $result = "Yeah, that number is in there";
} else {
    $result = "Sorry.";
}
if (strpos(','.$string.',' , ','.$numberA.',') !== FALSE) {
    //found
}

Uyarı koruma ',' karakter, onlar '13 'sihirli, '1, 2, 133' dava ile başa çıkmak için yardımcı olacaktır.

Eğer dize tam sayı, bunun değil, sadece bir parçası uygun olduğundan emin olun.

function numberInList($num, $list) {
    return preg_match("/\b$num\b/", $list);
}
$string = "8,7,13,14,16";    
numberInList(13, $string); # returns 1
numberInList(8, $string); # returns 1
numberInList(1, $string); # returns 0
numberInList(3, $string); # returns 0

Sadece dize varlığını bulmak için kontrol ise basit bir string arama yapmalıdır. Ben php konuşamayan ama bu yapılabilir nasıl olduğunu düşünüyorum.

$mystring = '8,7,13,14,16';
$findme   = '13';

if (preg_match('/(?>(^|[^0-9])'.$findme.'([^0-9]|$))/', $mystring)) {
    $result = "Yeah, that number is in there";
} else {
    $result = "Sorry.";
}