У меня есть такая строка:
S="str1|str2|str3"
Я хочу извлечь еще одну строку из S, которая будет содержать только
t="str1|str2"
где | - разделитель
|
спасибо
$string = "str1|str2|str3"; $pieces = explode( '|', $string); // Explode on '|' array_pop( $pieces); // Pop off the last element $t = implode( '|', $pieces); // Join the string back together with '|'
Либо используйте манипуляции со строками:
$string = "str1|str2|str3"; echo substr( $string, 0, strrpos( $string, '|'));
Демо
Этот пример должен указать вам правильный путь
$str = "str1|str2|str3"; $pcs = explode("|", $str); echo implode( array_slice($pcs, 0, 2), "|" );
Итак, получить ту же строку без последнего элемента?
Это работает:
print_r(implode('|', explode('|', 'str1|str2|str3', -1)));
Использование разнесения с отрицательным пределом , чтобы он возвращал всю строку без последнего элемента, а затем снова взорвал элементы.
Я бы взглянул на функцию strpos и на функцию substr .
Я бы так и сделал.
$s = 'str1|str2|str3'; $t = implode('|', explode('|', $s, -1)); echo $t; // outputs 'str1|str2'
implode("|", array_slice(explode("|", $s), 0, 2));
Не очень гибкое решение, но оно подходит для вашего теста.
В качестве альтернативы, вы можете использовать третий параметр explode() limit, например:
explode()
limit
implode("|", explode("|", $s, -1));