Я хотел бы удалить первое слово из строки с помощью PHP. Пробовал искать, но не смог найти ответ, который я мог бы понять.
например: «Белая майка», чтобы она стала «Майка».
Спасибо
Я хотел бы удалить первое слово из строки с помощью PHP. Пробовал искать, но не смог найти ответ, который я мог бы понять.
например: «Белая майка», чтобы она стала «Майка».
Спасибо
Нет необходимости взрывать или манипулировать массивом, вы можете использовать функцию strstr:
echo strstr("White Tank Top"," ");
//Tank Top
ОБНОВЛЕНИЕ: спасибо @Sid. Чтобы удалить лишнее пустое пространство, вы можете сделать:
echo substr(strstr("White Tank Top"," "), 1);
strtr
. Я собирался напечатать 3 строки, используя strpos
+ substr
, когда увидел ваш ответ. Добавьте ltrim
, если есть несколько пробелов, и вы золотой.
- person Fanis Hatzidakis; 26.07.2011
strlen
или запустите его в отладчике, и вы это заметите :)
- person Fanis Hatzidakis; 26.07.2011
strlen
показал интересное белое пространство, добавил ваше решение в ответ, спасибо!
- person amosrivera; 26.07.2011
Вы можете использовать функцию preg_replace
с регулярным выражением ^(\w+\s)
, которое будет соответствовать первому слову строки как таковой:
$str = "White Tank Top";
$str = preg_replace("/^(\w+\s)/", "", $str);
var_dump($str); // -> string(8) "Tank Top"
function remove_word($sentence)
{
$exp = explode(' ', $sentence);
$removed_words = array_shift($exp);
if(count($exp)>1){
$w = implode(' ', $exp);
}else{
$w = $exp[0];
}
return $w;
}
Попробуйте эту функцию, я надеюсь, что это работает для вас.
Если наличие пробела в строке не гарантируется, будьте осторожны при выборе метода, который не даст сбоев в таких случаях.
Если вы используете explode()
, обязательно ограничьте количество взрывов для максимальной эффективности.
$strings = ["White", "White Tank", "White Tank Top"];
foreach ($strings as $string) {
echo "\n{$string}:";
echo "\n-\t" , substr($string, 1 + (strpos($string, ' ') ?: -1));
$explodeOnce = explode(' ', $string, 2);
echo "\n-\t" , end($explodeOnce);
echo "\n-\t" , substr(strstr($string, " "), 1);
echo "\n-\t" , ltrim(strstr($string, " "));
echo "\n-\t" , preg_replace('~^\S+\s~', '', $string);
}
Вывод:
White:
- White
- White
- // strstr() returned false
- // strstr() returned false
- White
White Tank:
- Tank
- Tank
- Tank
- Tank
- Tank
White Tank Top:
- Tank Top
- Tank Top
- Tank Top
- Tank Top
- Tank Top
Я предпочитаю метод регулярных выражений, потому что он стабилен во всех вышеперечисленных случаях и представляет собой вызов одной функции. Обратите внимание, что в группе захвата нет необходимости, так как полное соответствие строки заменяется. ^
соответствует началу строки, \S+
соответствует одному или нескольким непробельным символам, а \s
соответствует одному пробельному символу.
return implode(' ', array_shift(explode(' ', $sentence)));
? я никогда не был уверен в php.
- person Patrick Perini; 26.07.2011