Dize sağdan sola Patlat nasıl?

7 Cevap php
$split_point = ' - ';
$string = 'this is my - string - and more';

Nasıl ikinci $ split_point örneği değil ilk kullanan bir bölünme yapabilirsiniz. Ben bir şekilde sol arama hakkı belirtebilir miyim? En basit yaklaşım?

Temelde nasıl sağdan sola doğru patlayabilir yok. "-" Ben son örneğini almak istiyorum.

Sonuç I gerekir:

$item[0]='this is my - string'; $item[1]='and more';

olup:

$item[0]='this is my'; $item[1]='string - and more';

7 Cevap

Sen strrev dizesini tersine çevirmek için kullanın ve sonra sonuçları tekrar tersine çevirebilir:

$split_point = ' - ';
$string = 'this is my - string - and more';

$result = array_map('strrev', explode($split_point, strrev($string)));

Bu olsa iyi çözüm olup olmadığından emin değil.

İşte bunu yapmanın başka bir yolu:

$split_point = ' - ';
$string = 'this is my - string - and more';

$stringpos = strrpos($string, $split_point, -1);
$finalstr = substr($string,0,$stringpos);

Ben doğru anlamak, örnek vaka (-, 've daha' dizesi bu da benim ') size vermek istiyorum?

Dahili bölünmüş / patlayabilir ileriye yalnızca gibi görünüyor - muhtemelen strrpos'un ile kendiniz uygulamak gerekir. (Sağ-sol arama)

$idx = strrpos($string, $split_point);
$parts = array(substr($string, 0, $idx), substr($string, $idx+strlen($split_point)))

'-' Neden bölmek değil, ama sonra tekrar bir araya almak ilk iki dizisi girdileri katılmak?

Eğer sadece gözardı edilecek $ split_point ilk geçtiği istiyorum varsayarak, bu sizin için çalışması gerekir:

# retrieve first $split_point position
$first = strpos($string, $split_point);
# retrieve second $split_point positon
$second = strpos($string, $split_point, $first+strlen($split_point));
# extract from the second $split_point onwards (with $split_point)
$substr = substr($string, $second);

# explode $substr, first element should be empty
$array = explode($split_point, $substr);

# set first element as beginning of string to the second $split_point
$array[0] = substr_replace($string, '', strpos($string, $substr));

Bu $ split_point ikinci bir örneğini (dahil) sonra $ split_point her geçtiği bölünmüş sağlayacaktır.

Ben aynı uppon tökezledi ve şöyle çözdüm:

$split_point = ' - ';
$string = 'this is my - string - and more';

$reverse_explode = array_reverse(explode($split_point, $string));

Buna ne dersiniz:

$parts = explode($split_point, $string);
$last = array_pop($parts);
$item = array(implode($split_point, $parts), $last);

Herhangi bir golf ödül kazanmak için gidiyoruz, ama niyet gösterir ve iyi çalışıyor değil, sanırım.