2011-08-12 10 views
40

Muszę usunąć pierwsze 3 litery ciągu i 3 ostatnie litery ciągu. Wiem, że mogę użyć substr(), aby zacząć od pewnej postaci, ale jeśli potrzebuję usunąć zarówno pierwszą, jak i ostatnią postać, nie jestem pewien, czy rzeczywiście mogę tego użyć. Jakieś sugestie?Usuń pierwsze 3 znaki i ostatnie 3 znaki z String PHP

Odpowiedz

88

zdać ujemną wartość jako length argumentu (3rd argumentu), takich jak:

$result = substr($string, 3, -3); 

więc to:

<? 
    $string = "Sean Bright"; 
    $string = substr($string, 3, -3); 
    echo $string; 
?> 

Wyjścia:

n Bri
1

Nie wiem php, ale czy nie możesz wziąć długości napisu, zacząć jako pozycję 3 i wziąć długość-6 ​​znaków używając substr?

+0

Cóż, jeśli robię substr, to tak naprawdę nie usuwa znaków. Jeśli wykonam substr ($ var, 3), rozpocznie się on na trzeciej pozycji. Następnie, jeśli zrobię substr ($ var, -3), nadal będzie on zawierał pierwsze 3 znaki w ciągu znaków i wcześniej skończy 3 znaki. Potrzebuję go do całkowitego usunięcia postaci. –

+0

@Howdy_McGee zobacz odpowiedzi Seana Brighta i Jonathana M. –

+0

Wygląda na to, że Sean Bright dostarczył odpowiedź. lub czy chciałeś usunąć znaki z oryginalnego napisu? Wiem, że to nie jest technicznie to samo, ale możesz zastąpić oryginalną zmienną tym, co zwraca substr. –

1
$myString='123456789'; 
$newString=substr($myString,3,-3); 
+0

Nie wiedziałem, że substr zaakceptował trzeci parametr! dzięki! –

2
substr($string, 3, strlen($string) - 6) 
27

Zastosowanie

substr($var,1,-1) 

to zawsze będzie pierwszy i ostatni, bez konieczności korzystania z strlen.

przykład:

<?php 
    $input = ",a,b,d,e,f,"; 
    $output = substr($input, 1, -1); 
    echo $output; 
?> 

wyjściowa:

A, B, D, E, F

+0

Jest to znacznie bardziej uniwersalna odpowiedź niż akceptowana, jednak zaakceptowana odpowiedź spełnia wymagany 3-znakowy problem. –

5

Jak podano w innych odpowiedzi można zastosować jedną z następujących funkcje umożliwiające osiągnięcie celu:

to zależy o ilości znaków, które należy usunąć i czy usunięcie musi być specyficzne. Ale ostatecznie substr() idealnie odpowiada na twoje pytanie.

Może ktoś myśli o usunięciu pierwszego/ostatniego znaku przez string dereferencing.Zapominać, że to nie będzie działać jako null jest char, a także:

<?php 
$string = 'Stackoverflow'; 
var_dump($string); 
$string[0] = null; 
var_dump($string); 
$string[0] = null; 
var_dump($string); 
echo ord($string[0]) . PHP_EOL; 
$string[1] = ''; 
var_dump($string); 
echo ord($string[1]) . PHP_EOL; 
?> 

powraca:

string(13) "Stackoverflow" 
string(13) "tackoverflow" 
string(13) "tackoverflow" 
0 
string(13) "ackoverflow" 
0 

I to nie jest możliwe użycie unset($string[0]) ciągów:

krytyczny błąd: Nie można usunąć przesunięć ciągu znaków w /usr/www/***.php na linii **