Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么会出错;strstr()的参数计数错误;?_Php - Fatal编程技术网

Php 为什么会出错;strstr()的参数计数错误;?

Php 为什么会出错;strstr()的参数计数错误;?,php,Php,由于某种原因,我出现以下错误: function splitsection($string,$start,$end) { return strstr( substr( $string, strpos( $string, $start) + strlen( $start)), $end, true); } 有什么想法吗?更新到PHP版本5.3或更高版本。我认为您使用的是旧的PHP版本。PHP5.2及更早版本不支持第三个参数。我建议您使用PHP的更新版本,如5.3、5.4、5.5或5.6版

由于某种原因,我出现以下错误:

function splitsection($string,$start,$end) {
    return strstr( substr( $string, strpos( $string, $start) + strlen( $start)), $end, true);
}

有什么想法吗?

更新到PHP版本5.3或更高版本。

我认为您使用的是旧的PHP版本。PHP5.2及更早版本不支持第三个参数。我建议您使用PHP的更新版本,如5.3、5.4、5.5或5.6版

PHP说:

5.3.0在_针前增加了可选参数

PHP指定在
5.3.0
中首先添加
$before\u needle
参数。因此,如果使用旧版本,则应用的参数太多。不过不用担心,因为您可以轻松地使用复制该函数,并使其在较旧版本的PHP中工作(
<5.3.0
):


用法:

<?php
    function strstr_replica($haystack, $needle, $beforeNeedle = false) {
        $needlePosition = strpos($haystack, $needle);

        if ($position === false) {
            return false;
        }

        if ($beforeNeedle) {
            return substr($haystack, 0, $needlePosition);
        } else {
            return substr($haystack, $needlePosition);
        }
    }
?>


这里还有一个解决方案:

<?php
    $email = 'name@example.com';
    $domain = strstr_replica($email, '@');
    var_dump($domain); //string(12) "@example.com"

    $user = strstr_replica($email, '@', true);
    var_dump($user); //string(4) "name"
?>


可能重复:检查说明在
5.3.0
中:“在打捆针之前添加了可选参数”的选项。这意味着要使用最后一个参数,您需要至少使用PHP 5.3.0,或者创建自己的函数来执行相同的操作。@tas9我明白了,是的,这是因为PHP版本较低,有人能帮助使此函数与旧版本兼容吗?@PeakDermutag虽然这样的策略可能有效,但您会发现它会极大地阻碍,特别是当您尝试执行在旧版本中无法执行的操作时,例如带有
use
@Neit的匿名函数,我没有此选项,因为im位于共享主机上,然后更改主机。我工作的主机提供共享主机,带有一个小下拉菜单,可以选择5.2、5.3或5.4,甚至很快会添加5.5。
<?php
    $email = 'name@example.com';
    $domain = strstr_replica($email, '@');
    var_dump($domain); //string(12) "@example.com"

    $user = strstr_replica($email, '@', true);
    var_dump($user); //string(4) "name"
?>
<?php
//Returns Part of Haystack string starting from and including  
//the first occurrence of needle to the end of haystack.

$email  = 'name@example.com';  
$needle = '@';  
$domain = strstr($email, $needle);
echo $domain.'<br />';
// prints @example.com  


//Returns Part of Haystack The way YOU want pre PHP5.3.0  
$revEmail = strrev($email);  
$name = strrev(strstr($revEmail, $needle));  
echo $name.'<br />';  
echo substr($name,0,-(strlen($needle)));  
// prints name
?>