0

私は次のJSを持っています:

if(window.location.href.indexOf("search.php") != -1 
    || window.location.href.indexOf("list.php") != -1
    || window.location.href.indexOf("view.php") != -1
    || window.location.href.indexOf("contact.php") != -1) {

しかし、それをPHPに変換したい。PHP の indexOf に相当するもの、または PHP でこれを行う最善の方法は何ですか。

人々が以下にリンクしているstrposの例がわかりません。おそらく、私がJSで行ったこととより一致した例でしょうか?

4

5 に答える 5

4

質問は同等のものを求めます。PHP の strpos() は配列では機能しませんが、javascript の indexOf は (文字列を配列として自動的に処理することにより) 機能します。したがって、これに相当するPHPがあります

function indexOf($array, $word) {
    foreach($array as $key => $value) if($value === $word) return $key;
    return -1;
}

// Example: indexOf(['hi','bye'], 'bye') returns 1
于 2015-06-23T05:42:30.633 に答える
3

strpos()また、失敗した場合はブール値を返しますfalse

JS バージョン:

indexOf() メソッドは、指定された値が文字列内で最初に出現する位置を返します。検索する値が存在しない場合、このメソッドは -1 を返します。注: indexOf() メソッドは大文字と小文字を区別します。

PHP のバージョン:

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

干し草の山文字列で最初に出現する針の数値位置を見つけます。干し草の山文字列の先頭に対する針の位置を返します (オフセットとは関係ありません)。また、文字列の位置は 1 ではなく 0 から始まることに注意してください。針が見つからない場合は FALSE を返します。

于 2012-07-04T14:02:25.363 に答える
3

あなたの JavaScript コードは を使用していますがindexOf()、実際には、達成したいことを処理するためのより良い方法が PHP にあります。

URL のスクリプト名を確認し、それに基づいてアクションを実行するだけです。

私の意見では、PHPステートメントは、PHP関数と組み合わせたifswitchステートメントよりも優れています。strpos()

以下は、PHP の switch ステートメントを使用してそれを実現する方法を示しています。

switch(basename($_SERVER['SCRIPT_NAME'])) {
  case 'search.php':
    // Script to run for search.php
    break;
  case 'list.php':
    // Script to run for list.php
    break;
  case 'view.php':
    // Script to run for view.php
    break;
  case 'contact.php':
    break;
  default:
      // Perform code on anything except the above cases.
    break;
}
于 2012-07-04T14:03:31.150 に答える
2

二次的な質問への回答として、 strpos は次のように使用できます。

if (strpos($_SERVER['SCRIPT_NAME'], "search.php") !== false
    || strpos($_SERVER['SCRIPT_NAME'], "list.php") !== false
    || strpos($_SERVER['SCRIPT_NAME'], "view.php") !== false
    || strpos($_SERVER['SCRIPT_NAME'], "contact.php") !== false) {

...確かにRawkodeの答えはよりエレガントです。

于 2012-07-05T13:11:49.787 に答える
1

strpos();

ISO-8859-1 エンコーディング (UTF-8 など) を使用していない場合は、mb_strpos() を使用する必要があります。

于 2012-07-04T14:02:37.523 に答える