如何使 strpos() 只匹配分隔字符串中的整数?
我有一个逗号分隔的字符串,我需要能够在该字符串中搜索给定字符串的实例。我使用以下函数:
function isChecked($haystack, $needle) {
$pos = strpos($haystack, $needle);
if ($pos === false) {
return null;
} else {
'return 'checked="checked"';
}
}
示例: isChecked('1,2,3,4', '2')
搜索 2
是否在字符串中并勾选相应的复选框以我的其中一种形式。
但是,当涉及到 isChecked('1,3,4,12', '2')
时,它不会返回 NULL
,而是返回 TRUE
,因为它显然在 12
中找到了字符 2
。
我应该如何使用 strpos 函数才能得到正确的结果?
I have a comma delimited string and I need to be able to search the string for instances of a given string. I use the following function:
function isChecked($haystack, $needle) {
$pos = strpos($haystack, $needle);
if ($pos === false) {
return null;
} else {
'return 'checked="checked"';
}
}
Example: isChecked('1,2,3,4', '2')
searches if 2
is in the string and ticks the appropriate checkbox in one of my forms.
When it comes to isChecked('1,3,4,12', '2')
though, instead of returning NULL
it returns TRUE
, as it obviously finds the character 2
within 12
.
How should I use the strpos function in order to have only the correct results?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您也可以使用正则表达式
Also you can use regular expressions
使用explode()可能是最好的选择,但这里有一个替代方案:
Using explode() might be the best option, but here's an alternative:
最简单的方法可能是将
$haystack
拆分为数组,并将数组的每个元素与$needle
进行比较。使用的东西[除了你使用的东西,例如 if 和 function ]:
explode()
foreach
strcmp
trim
函数:
示例:
返回:
示例 2:
返回:
希望有帮助。
Simplest way to do it may be splitting
$haystack
into array and compare each element of array with$needle
.Things used [except used by you like if and function]:
explode()
foreach
strcmp
trim
Funcion:
Example:
Returns:
Example 2:
Returns:
Hope it helps.