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 ] )

在 haystack 字符串中查找第一次出现 needle 的数字位置。返回针相对于 haystack 字符串开头的位置(与偏移量无关)。另请注意,字符串位置从 0 开始,而不是 1。如果未找到针头,则返回 FALSE。

于 2012-07-04T14:02:25.363 回答
3

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

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

在我看来,PHPswitch语句比if语句结合 PHPstrpos()函数要好。

下面是如何使用 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 回答