我有以下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中所做的一切?
答案 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)
如果您不使用ISO-8859-1编码(UTF-8或其他),则应使用mb_strpos()。