function splitsection($string,$start,$end) {
return strstr( substr( $string, strpos( $string, $start) + strlen( $start)), $end, true);
}
由于某种原因,我收到以下错误:
Warning: Wrong parameter count for strstr()
有什么想法吗?
答案 0 :(得分:2)
PHP manual指定首先在$before_needle
中添加5.3.0
参数。因此,如果您使用旧版本,则应用的参数太多。但是,请不要担心,因为您可以使用strstr
和strpos
轻松复制substr
函数,以使其在旧版本的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"
?>
答案 1 :(得分:0)
我认为您使用的是旧的PHP版本。 PHP 5.2及更早版本不支持第三个参数。我建议您使用较新版本的PHP,如版本5.3,5.4,5.5或5.6。
PHP docs说:
5.3.0添加了可选参数before_needle。
答案 2 :(得分:0)
这是您的另一个解决方案:
<?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
?>
答案 3 :(得分:-1)
更新到PHP 5.3或更新版本。