#php #explode
#php #взорваться
Вопрос:
Допустим, у меня есть эта строка
One.Two_Three_Four.Five.Six_Three_Eight ...
Как я могу получить все строки до и после последнего «Three_»
Я подумываю об использовании explode.
Комментарии:
1. explode вернет массив с 4 элементами, если
.
только между тремя и четырьмя не является чем-то, что только ВЫГЛЯДИТ как a.
, но на самом деле им не является.2. Почему вы уверены, что
four
этого там нет? Вы сделалиprint_r($string)
?
Ответ №1:
Вы можете установить ограничение в explode()
, но поскольку вы хотите, чтобы оно было в конце, вы можете сделать strrev()
— так, чтобы последняя точка стала первой.
$string = strrev($string); //reversed
$data = explode(".", $string, 2);
$data = array_map("strrev", $data); //strings in correct order
Но поскольку строка была отменена, $data[0]
теперь будет "four"
и $data[1]
будет "one.two.three"
Комментарии:
1. Я только что изменил свой вопрос, пожалуйста, проверьте: (
2. @user3749450 Вы не можете использовать
_Three_
вместо.
для взрыва?
Ответ №2:
Если вам нужен текст после финала .
, используйте что-то вроде этого:
$string = "One.Two.Three.Four";
$last = substr($string, strrpos($string, '.') 1);
echo $last; // Four
Редактировать
ОП изменил свой вопрос на что-то совершенно другое, но я все равно оставлю это здесь.
Ответ №3:
Другим решением может быть
$parts = explode(".", $string);
$last = array_pop($parts);
$other = implode(".", $parts)
Ответ №4:
Вы можете использовать array_pop()
$string = "A.B.C.D.E";
$a = explode(".",$string);
array_pop($a);
Ответ №5:
Explode возвращает массив, поэтому вам нужно выполнить итерацию по нему, чтобы просмотреть все значения. Вы можете сделать это напрямую или с помощью foreach(for).
$string = "One.Two.Three.Four";
$a = explode(".",$string);
echo $a[0]; // One
echo $a[1]; // Two
echo $a[2]; // Three
echo $a[3]; // Four
// Or
foreach ($a as $v){
echo $v; // One, Two, Three, Four
}
http://php.net/manual/pt_BR/control-structures.foreach.php
Если вам нужен только ПОСЛЕДНИЙ элемент, вы можете сделать что-то вроде этого:
echo end($a); // Four
Комментарии:
1. это совсем не помогает. Что, если строка длиннее?
2. @user3749450 используйте foreach, первые предназначены для прямого доступа
3. @user3749450 используйте функцию array_pop()
Ответ №6:
Попробуйте:
$string="one.two.three.four";
$array = explode(".",$string);
$last= end($array);
echo $last;
Это поможет, если вы хотите всегда иметь последнее значение в массиве. Сначала вы разбиваете строку на массив, а затем берете массив и используете end
.