例如,我有一个字符串I am @ the penthouse.
我需要知道如何在php字符串中找到字符“@”以及字符的位置。
我尝试了strpos,但它不起作用。
感谢您的帮助。
编辑:
我一直用这个来获得角色:
$text = "I am @ the penthouse";
$pos = strrpos($text, '@');
if($pos == true)
{
echo "yes";
}
答案 0 :(得分:5)
我会这样做
if (($pos = strpos('I am @ the penthouse.', '@') !== false) {
echo "pos found: {$pos}";
}
else {
echo "no @ found";
}
注意:由于@
可能是字符串中的第一个字符,strpos
可能会返回0
。请考虑以下事项:
// check twitter name for @
if (strpos('@twitter', '@')) { ... }
// resolves to
if (0) {
// this will never run!
}
因此,strpos
会在找不到匹配项时显式返回false
。这是如何正确检查子字符串位置:
// check twitter name for @
if (strpos('@twitter', '@') !== false) {
// valid twitter name
}
答案 1 :(得分:1)
您也可以使用函数strpos()
来实现此目的。与strrpos()
类似,它在字符串中搜索子字符串 - 或者至少是字符串 - 但它返回该子字符串的第一个位置或布尔值(false)如果找不到子串。所以片段看起来像:
$position = strpos('I am @ the penthouse', '@');
if($position === FALSE) {
echo 'The @ was not found';
} else {
echo 'The @ was found at position ' . $position;
}
注意在php中strpos()
和strrpos()
会出现常见的陷阱。
1。 检查返回值的类型!
想象一下以下示例:
if(!strpos('@stackoverflow', '@')) {
echo 'the string contains no @';
}
尽管字符串包含'@',但仍未输出'@'。那是因为PHP中的数据类型很弱。之前的strpos()调用将返回int(0),因为它是string中的第一个char。但除非使用'==='运算符强制执行严格类型检查,否则此int(0)将被处理为FALSE。这是正确的方法:
if(strpos('@stackoverflow', '@') === FALSE) {
echo 'the string contains no @';
}
2。 使用正确的参数顺序!
strpos的签名是:
strpos($haystack, $needle [, $start]);
这与不同于 PHP中的其他str *函数,其中$ needle是第一个arg。
牢记这一点! ;)
答案 2 :(得分:0)
这似乎在PHP 5.4.7中对我有用:
$pos = strpos('I am @ the penthouse', '@');
strpos
的确切含义是什么意思?
答案 3 :(得分:-1)
看这对我有用,它也适合你
$string = "hello i am @ your home";
echo strpos($string,"@");
答案 4 :(得分:-2)
我希望这会有所帮助 -
<?php
$string = "I am @ the penthouse";
$desired_char = "@";
// checking whether @ present or not
if(strstr($string, $desired_char)){
// the position of the character
$position = strpos('I am @ the penthouse', $desired_char);
echo $position;
}
else echo $desired_char." Not found!";
?>