Jak zdobyć pierwsze 5 znaków z ciągu

Odpowiedzi:

549

W przypadku ciągów jednobajtowych (np. US-ASCII, rodzina ISO 8859 itp.) Należy używać, substraw przypadku ciągów wielobajtowych (np. UTF-8, UTF-16 itp.) mb_substr:

// singlebyte strings
$result = substr($myStr, 0, 5);
// multibyte strings
$result = mb_substr($myStr, 0, 5);
Gumbo
źródło
2
Dzięki, właśnie tego potrzebowałem:if(substr($myURL, 0, 4) == "www.") $myURL = preg_replace('/www./', '', $myURL, 1);
shanehoban,
1
Naprawdę potrzebujesz tylko str_replace ('www.', '', $ Url); Nie musisz sprawdzać, czy istnieje.
Doug Cassidy,
8
@DougCassidy: co jeśli $url = "www.subwww.myweirddomainwww.com"? Bez wstępnego sprawdzenia substr($url, 0, 4), zwrócone $urljest zrujnowane !!
Fr0zenFyr
46

Użyj substr():

$result = substr($myStr, 0, 5);
BoltClock
źródło
substr("Häagen-Dazs", 0, 5) == "Häag"- Co ja robię źle?
user187291
12
@stereofrog: Prawdopodobnie używasz wielobajtowego kodowania znaków, takiego jak UTF-8. W takim przypadku użyj mb_substr.
Gumbo,
20

Alternatywny sposób na uzyskanie tylko jednej postaci.

$str = 'abcdefghij';

echo $str{5};
Paul Hodel
źródło
7
To jest prawidłowa odpowiedź na złe pytanie. Doceniony.
mickmackusa,
Bo to wymaga czegoś więcej niż wklejania kopii?
Robert Pounder
UWAGA: W przypadku zestawów znaków wielo-bajtowych, takich jak UTF-8, należy zamiast tego użyć mb_substr(i, 1), aby uzyskać ith charakter. @RobertPounder - ponieważ nie obejmuje uzyskania więcej niż jednej postaci.
ToolmakerSteve
1
@ToolmakerSteve, jeśli tak mówisz; $string = "Häagen-Dazs"; $stringFirstChars = function($amount, $string) { $i=0;$done=false;$return = '';while($done == false) {$return.=$string{$i};if($amount===$i)$done=true;$i++;}return $return;}; var_dump($stringFirstChars(5, $string)); (skopiuj to wklej do phptester.net lub my)
Robert Pounder
Tak, wiem. Nie głosowałem osobiście; Właśnie zauważyłem, w jaki sposób nie odpowiada na pytanie. To, co napisałeś - to byłaby kompletna odpowiedź: pokazanie początkującemu, w jaki sposób php rozciąga się od zdobycia jednej postaci do wielu postaci. Przydatny dodatek do pytań i odpowiedzi - dziękuję.
ToolmakerSteve
15

Możesz użyć takiej substrfunkcji:

echo substr($myStr, 0, 5);

Drugi argument substrdotyczy tego, od której pozycji chcesz rozpocząć, a trzeci argument dotyczy liczby znaków, które chcesz zwrócić.

Sarfraz
źródło
-4

Możesz uzyskać wynik, po prostu używając substr () :

Składnia substr (ciąg, początek, długość)

Przykład

<?php
$myStr = "HelloWordl";
echo substr($myStr,0,5);
?>

Wynik :

 Hello
Prabhu Nandan Kumar
źródło
16
Ten BARDZO późny post nie wnosi żadnej wartości i jedynie wzdycha stronę, ponieważ wszystko, co mówi, zostało już powiedziane (lata wcześniej). Nie publikuj odpowiedzi, chyba że masz coś wyjątkowego i wartościowego do dodania. Poparłem tę odpowiedź, aby zniechęcić do bezużytecznych, późnych postów.
mickmackusa,
Odpowiedziałeś 7 lat później? Poważnie?
Varin