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";
}

注:@は文字列の最初の文字である可能性があるためstrpos0. 次の点を考慮してください。

// 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()文字列内の部分文字列 (または少なくとも文字) を検索するように、部分文字列が見つからない場合はその部分文字列の最初の位置またはブール値 (false)を返します。したがって、スニペットは次のようになります。

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

php.ini にはよくある落とし穴があることに注意strpos()してください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]);

これは、$ needleが最初の引数である PHP の他の str* 関数とは異なります。

これを覚えておいてください!;)

于 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 に答える