0

PHPを使用して、別の文字列内の文字列を検索しようとしています(strposを使用してみましたが、結果が返されませんでした)。これが私が試したことです:

$assignedBuildings = " , building 1, building 2, building 3";
$buildingName = "building 1";
$assArray = array_map('trim', explode(',', $assignedBuildings));
print_r($assArray);
echo("Looking for: " . $buildingName . " in " . $assignedBuildings);
$pos = in_array($buildingName, $assArray);

print_rは私にこれを取得します:

Array
(
    [0] => 
    [1] => Test Chapter
    [2] => Test 2 Chapter
    [3] => Test 3 Chapter
)

$ posをエコーすると、何も得られません( ""のように)。

$buildingNameが「テスト3チャプター」であるとしましょう。$ assArrayでどのように見つけますか?

4

5 に答える 5

4

タイプミスがあります。

変化する

$pos = strpos($assingedBuildings, $buildingToLookFor);

$pos = strpos($assignedBuildings, $buildingToLookFor);
于 2012-11-27T07:13:40.217 に答える
3

割り当てられた建物のリストがカンマ区切りのリストである場合は、それを展開してから、結果の配列で値を確認することをお勧めします。したがって、次のようなものです。

$assignedbuildings = explode(",",",building 1,building 2,building 3");
$buildingToLookFor = "building 1";
$buildingfound = in_array($buildingtolookfor,$assignedbuildings);

注意事項:

  1. 検索文字列にも含まれていないリスト内のアイテムの周りにスペースがないことを確認する必要があります
  2. 検索で大文字と小文字を区別しないようにする場合は、両方の文字列の前後に strtolower を追加します。
  3. strpos 関数を使用すると、個々のエントリが分離されないため問題があります。したがって、リストに「Building 10」が含まれている場合、strpos は「Building 10」と「Building 1」の両方の値を返します。
于 2012-11-27T07:28:26.360 に答える
0

$assingedBuildingsのタイプミスがあなたを台無しにしています。

于 2012-11-27T07:14:32.833 に答える
0

大文字と小文字を区別する検索にはstrstr( )を使用でき、大文字と小文字を区別しない検索にはstristr()を使用し ます。ブール値を返します。

于 2012-11-27T07:15:25.307 に答える
0

に変更する必要があります$assingedBuildings:)ここで$assignedBuildingsデモを参照してください。

于 2012-11-27T07:22:45.060 に答える