Извлечение строки PHP из другой строки - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть такая строка:

S="str1|str2|str3"

Я хочу извлечь еще одну строку из S, которая будет содержать только

t="str1|str2"

где | - разделитель

спасибо

Ответы [ 6 ]

2 голосов
/ 23 ноября 2011
$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, '|'));

Демо

0 голосов
/ 23 ноября 2011

Этот пример должен указать вам правильный путь

$str = "str1|str2|str3";
$pcs = explode("|", $str);
echo implode( array_slice($pcs, 0, 2), "|" );
0 голосов
/ 23 ноября 2011

Итак, получить ту же строку без последнего элемента?

Это работает:

print_r(implode('|', explode('|', 'str1|str2|str3', -1)));

Использование разнесения с отрицательным пределом , чтобы он возвращал всю строку без последнего элемента, а затем снова взорвал элементы.

0 голосов
/ 23 ноября 2011

Я бы взглянул на функцию strpos и на функцию substr .

Я бы так и сделал.

0 голосов
/ 23 ноября 2011
$s = 'str1|str2|str3';
$t = implode('|', explode('|', $s, -1));
echo $t; // outputs 'str1|str2'
0 голосов
/ 23 ноября 2011
implode("|",  array_slice(explode("|", $s), 0, 2));

Не очень гибкое решение, но оно подходит для вашего теста.

В качестве альтернативы, вы можете использовать третий параметр explode() limit, например:

implode("|",  explode("|", $s, -1));
...