有沒有簡單的方法來檢查一個值是否在一個字符串內?檢查值是否在以逗號分隔值的字符串內部?
$string = ' 123,456,789,abc789,def'
if ($string has '789') {
// code
}
我只想要精確匹配(所以只有789,而不是abc789)
我能想到此刻做的唯一方法是用逗號將其爆炸串入一個數組,然後檢查每個值是否匹配。有更好/更有效的方法嗎?
有沒有簡單的方法來檢查一個值是否在一個字符串內?檢查值是否在以逗號分隔值的字符串內部?
$string = ' 123,456,789,abc789,def'
if ($string has '789') {
// code
}
我只想要精確匹配(所以只有789,而不是abc789)
我能想到此刻做的唯一方法是用逗號將其爆炸串入一個數組,然後檢查每個值是否匹配。有更好/更有效的方法嗎?
使用strpos例如,如果你有' 123,456,789,12789,abc,def'
將無法工作,尋找12,這將不會返回true,用preg_match代替:
$string = ' 123,456,789,abc789,def';
$what_to_find = '789';
if (preg_match('/\b' . $what_to_find . '\b/', $string)) {
// code
}
您可以使用strpos()
函數。它將返回FALSE
如果針沒有在搜索字符串發現:
if (strpos($string, '789') !== FALSE) {
// code...
}
如果你想完全匹配,那麼我會使用explode()
:
$parts = explode(',', trim($string));
if (in_array('789', $parts)) {
// code...
}
@Sbml:見我的答案的第一部分。它使用'strpos()':) –
對不起,這兩個選項都區分大小寫。對於不區分大小寫的情況,您可以添加stripos()函數:if(stripos($ string,「ABC」))echo「Found!」; – Sbml
@Sbml:是的,但沒關係。搜索字符串是「789」。 –
使用strpos()
功能。
$string = ' 123,456,789,abc,def'
if (strpos($string,'789') !== FALSE) {
// code
}
你可以用它來找到一個字符串內其他
$string = ' 123,456,789,abc,def';
if (strpos($string,'789') !== false) {
echo 'true';
}
的發生strpos
功能見Manual
你可能會爆炸,並檢查其陣列
在function stringContains($string, $needle)
{
$arr = explode(',',$string);
if(in_array($needle,$arr))
return true;
return false;
}
除了建議的建議離子,如果你在一個字符串123456哪裏strpos將返回一個位置
最新的投票是什麼? – Bryan
我認爲這可能是最好的方法,因爲我需要它是完全匹配,謝謝。 – user2413333
是啊,並在數組做檢查你,所以你不必手動檢查每個數組元素的匹配 – Bryan
的@布賴恩的代碼較短的版本:
function stringContains($string, $needle) {
return in_array($needle, explode(',', $string));
}
不會爆炸+檢查數組是否比preg_match更有效? – user2413333
不,正則表達式對字符串非常非常非常非常有效。 – OneOfOne
它比爆炸到陣列簡單,所以謝謝你的解決方案:) – user2413333