$variable ="Vanesh@abc";
if (strpos($variable, '@') !== false) {
$variable = substr($variable, 0, strpos($variable, "@"));
}
echo $variable;
ИЛИ ЖЕ
$display_name = 'Vanesh@abc';
if( false !== strstr($display_name,"@",true) ) {
$display_name = strstr($display_name,"@",true);
}
echo $display_name;
Какой из них я должен использовать, чтобы получить вывод как Vanesh? Будет лучше, если будут какие-то соображения относительно скорости и производительности.
Обновить: Может случиться так, что входная переменная может иметь символ @ или не иметь. Если нет, то строка будет записана так, как она есть в обоих фрагментах кода.
Я бы пошел с обоими. Сначала проверьте, существует ли @, а затем, чтобы получить имя.
Как руководство sais:
Если вы хотите только определить, встречается ли конкретная игла в
стог сена, используйте более быструю и менее интенсивную функцию памяти 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», без ванеша перед ним? Это приемлемое решение?
Итак, вот фактическое сравнение скорости. Победителем является оптимизированная версия вашей первой функции: Сравнение скорости
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
Ускорение происходит благодаря экономии времени на повторное вычисление одних и тех же значений снова и снова.
Вот смесь strstr и str_replace.
Strstr возвращает то, что есть после @ и str_replace используют это, чтобы заменить его ничем.
$var ="Vanesh@abc";
echo str_replace(strstr($var, '@') , "", $var);
Вроде бы довольно быстро. https://3v4l.org/ngCG7/perf#output