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
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
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?
$myString='123456789';
$newString=substr($myString,3,-3);
Nie wiedziałem, że substr zaakceptował trzeci parametr! dzięki! –
substr($string, 3, strlen($string) - 6)
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
Jest to znacznie bardziej uniwersalna odpowiedź niż akceptowana, jednak zaakceptowana odpowiedź spełnia wymagany 3-znakowy problem. –
Jak podano w innych odpowiedzi można zastosować jedną z następujących funkcje umożliwiające osiągnięcie celu:
- substr($string, 3, -3) usuwa 3 znaki z początku i końca
- trim($string, ",") usuwa wszelkie szczególne znaki z początku i końca
- ltrim($string, ".") usuwa wszelkie szczególne znaki od początku
- rtrim($string, ";") usuwa wszelkie szczególne znaki od końca
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 **
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. –
@Howdy_McGee zobacz odpowiedzi Seana Brighta i Jonathana M. –
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. –