$variable ="Vanesh@abc";
if (strpos($variable, '@') !== false) {
$variable = substr($variable, 0, strpos($variable, "@"));
}
echo $variable;
OR
$display_name = 'Vanesh@abc';
if( false !== strstr($display_name,"@",true) ) {
$display_name = strstr($display_name,"@",true);
}
echo $display_name;
我应该使用哪一个来输出 Vanesh ?如果有任何关于速度和性能的原因会更好。
更新:可能存在输入变量可能包含@符号或不具有@符号的情况。如果不是,则将在两个代码片段中写入字符串。
答案 0 :(得分:1)
我同意两者。首先检查@是否存在,然后检查第一个名称。
与手动sais一样:
如果您只想确定特定针是否在其中 haystack,使用更快,内存更少的内存密集函数strpos() 代替。
像这样:
$display_name = 'Vanesh@abc';
if(strpos($display_name, '@') !== false) { // we only need to know if the @ occurs here.
$display_name = strstr($display_name,"@",true); // here we wish to retrieve the first name
}
echo $display_name;
要注意的是,如果显示名称是“@”,该怎么办?还是“@abc”,前面没有vanesh?这是一个可以接受的解决方案吗?
答案 1 :(得分:1)
所以这是一个实际的速度比较。获胜者是您的第一个功能的优化版本:Speed Comparison
function orig1($variable)
{
$s = strpos($variable, '@');
if ($s !== false)
{
$variable = substr($variable, 0, $s);
}
return $variable;
}
function orig1_unop($variable)
{
if (strpos($variable, '@') !== false)
{
$variable = substr($variable, 0, strpos($variable, '@'));
}
return $variable;
}
3.000.000回合
orig1 0.36397695541382s
orig1_unop 0.49177098274231s
加速来自于节省一遍又一遍地重新计算相同值的时间。
答案 2 :(得分:0)
这是strstr和str_replace的混合 Strstr返回之后的,而str_replace使用它来替换它。
$var ="Vanesh@abc";
echo str_replace(strstr($var, '@') , "", $var);