2010-11-19 10 views
36

co to najszybszy sposób na uzyskanie jedynie important_stuff część z ciągiem jak ten:uzyskać ciąg po sznurku z ciągiem

bla-bla_delimiter_important_stuff 

_delimiter_ jest zawsze tam, ale reszta napisu można zmienić .

+1

wydaje się być pewnym nieporozumieniem, czy znaki są dosłownie, czy nie. poniższe rozwiązania są dobre. –

+0

Możesz znaleźć ['s ($ str) -> afterFirst ('_delimiter_')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L435) lub ['s ($ str) -> afterLast ('_delimiter_')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L445) pomocne, jako znaleźć w [tej samodzielnej bibliotece] (https://github.com/delight-im/PHP-Str). – caw

Odpowiedz

54

tutaj:

$arr = explode('delimeter', $initialString); 
$important = $arr[1]; 
+1

Proste i skuteczne, dobra odpowiedź. – jsims281

+6

W PHP 5.4 ... w tym przypadku w szczególności ... możesz wykonać jedną linijkę ... '$ important = explode (" delimeter ", $ initialString) [1];' – zgr024

+5

3 okrzyki za dereferencje! = D –

4
$string = "bla-bla_delimiter_important_stuff"; 
list($junk,$important_stufF) = explode("_delimiter_",$string); 

echo $important_stuff; 
> important_stuff 
+2

Lubię korzystać z listy. kiedy pierwszy raz miałeś tablicę, myślałem, że pokazałeś mi zdolność php do pisania w języku Pythona, której nie znałem! –

+0

fajne. dziękuję :) – Alex

6
 
$importantStuff = array_pop(explode('_delimiter_', $string)); 
+1

Spowoduje to zgłoszenie błędu "E_STRICT" ("Ścisłe standardy: tylko zmienne powinny być przekazywane przez odniesienie"), ponieważ array_pop używa odwołania, ale nadal działa. –

30
$result = end(explode('_delimiter_', 'bla-bla_delimiter_important_stuff')); 
+0

Bardzo inteligentne rozwiązanie. – andcl

+1

To spowoduje: ścisłe standardy: tylko zmienne powinny być przekazywane przez odniesienie. Musisz przypisać funkcję explode() do zmiennej temp. –

4

Lubię tą metodą:

$str="bla-bla_delimiter_important_stuff"; 
$del="_delimiter_"; 
$pos=strpos($str, $del); 

cięcie od końca do końca ogranicznika łańcucha

$important=substr($str, $pos+strlen($del)-1, strlen($str)-1); 

uwaga:

1) dla substr początek ciąg na '0', natomiast dla strpos & strlen bierze wielkość napisu (zaczyna się na '1')

2) za pomocą 1 znak separatora może dobry pomysł