PHP相当于indexOf

时间:2012-07-04 14:00:47

标签: php javascript

我有以下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中所做的一切?

5 个答案:

答案 0 :(得分:3)

strpos()应该做的伎俩,也会在失败时返回布尔值false

JS版:

  

indexOf()方法返回第一次出现的位置   字符串中的指定值。如果值为,则此方法返回-1   寻找永远不会发生。注意:indexOf()方法区分大小写。

PHP版本:

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

找到第一次出现针的数字位置   干草堆串。返回针相对于针存在的位置   haystack字符串的开头(与offset无关)。另请注意   字符串位置从0开始,而不是1.如果是,则返回FALSE   没找到针。

答案 1 :(得分:3)

虽然您的JavaScript代码使用indexOf(),但PHP实际上有更好的方法来处理您想要实现的目标。

您只需检查网址中的脚本名称,然后根据它执行操作。

在我看来,如果语句与PHP switch结合使用,PHP 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;
}

答案 2 :(得分:3)

问题要求等同。 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

答案 3 :(得分: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的答案确实更优雅。

答案 4 :(得分:1)

strpos();

如果您不使用ISO-8859-1编码(UTF-8或其他),则应使用mb_strpos()。