0

例如我有一个字符串I am @ the penthouse.

我需要知道如何在 php 字符串中找到字符“@”以及字符的位置。

我尝试了 strpos 但它不起作用。

我在这里先向您的帮助表示感谢。

编辑:

我一直在使用它来获取角色:

$text = "I am @ the penthouse";

$pos = strrpos($text, '@');

if($pos == true)
{
    echo "yes";
}
4

5 回答 5

5

我会这样做

请注意,我使用的是strpos,而不是反向对应物,strrpos

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
}
于 2013-01-09T05:34:01.017 回答
1

您也可以strpos()为此目的使用该功能。就像strrpos()它在字符串中搜索子字符串(或至少是字符)一样,但如果未找到子字符串,则返回该子字符串的第一个位置或 boolean(false) 。所以片段看起来像:

$position = strpos('I am @ the penthouse', '@');
if($position === FALSE) {
    echo 'The @ was not found';
} else {
    echo 'The @ was found at position ' . $position;
}

请注意strpos(),在 php.ini和php.ini 中都有一些常见的陷阱strrpos()

1. 检查返回值的类型!

想象以下示例:

if(!strpos('@stackoverflow', '@')) {
    echo 'the string contains no @';
}

尽管字符串包含“@”,但将输出“@”未找到。那是因为 PHP 中的弱数据类型。前面的 strpos() 调用将返回 int(0) 因为它是字符串中的第一个字符。但是,除非您使用 '===' 运算符强制执行严格的类型检查,否则此 int(0) 将作为 FALSE 处理。这是正确的方法:

if(strpos('@stackoverflow', '@') === FALSE) {
    echo 'the string contains no @';
}

2. 使用正确的参数顺序!

strpos 的签名是:

strpos($haystack, $needle [, $start]);

PHP 中的其他 str* 函数不同,其中 $needle 是第一个参数。

请记住这一点!;)

于 2013-01-09T05:30:17.697 回答
0

这似乎在 PHP 5.4.7 中对我有用:

$pos = strpos('I am @ the penthouse', '@');

你到底strpos是什么意思不工作?

于 2013-01-09T05:32:21.200 回答
-1

看这对我有用,它也对你有用

$string = "hello i am @ your home";
 echo strpos($string,"@");
于 2013-01-09T05:31:50.070 回答
-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!";
?>
于 2013-01-09T05:40:10.293 回答