Взорваться на последнем найденном PHP

#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
  

http://www.php.net/end

Комментарии:

1. это совсем не помогает. Что, если строка длиннее?

2. @user3749450 используйте foreach, первые предназначены для прямого доступа

3. @user3749450 используйте функцию array_pop()

Ответ №6:

Попробуйте:

 $string="one.two.three.four";
$array = explode(".",$string);
$last= end($array);
echo $last;
  

Это поможет, если вы хотите всегда иметь последнее значение в массиве. Сначала вы разбиваете строку на массив, а затем берете массив и используете end .