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
?>