文字列から最初の5文字を​​取得する方法


回答:


549

以下のためのシングルバイト文字列(例えばUS-ASCII、ISO 8859の家族など)を使用substrしてのためのマルチバイト文字列(例えばUTF-8、UTF-16など)を使用mb_substr

// singlebyte strings
$result = substr($myStr, 0, 5);
// multibyte strings
$result = mb_substr($myStr, 0, 5);

2
ありがとう、これは私がそれを必要としていたものです:if(substr($myURL, 0, 4) == "www.") $myURL = preg_replace('/www./', '', $myURL, 1);
shanehoban

1
本当に必要なのはstr_replace( 'www。'、 ''、$ url);だけです。存在するかどうかを確認する必要はありません。
Doug Cassidy 2017年

8
@DougCassidy:どうなり$url = "www.subwww.myweirddomainwww.com"ますか?の最初のチェックなしではsubstr($url, 0, 4)、返却$urlは台無しになります!!
Fr0zenFyr 2018

46

使用substr()

$result = substr($myStr, 0, 5);

substr("Häagen-Dazs", 0, 5) == "Häag"-何がいけないの?
user187291 2010

12
@stereofrog:おそらくUTF-8のようなマルチバイト文字エンコーディングを使用しています。その場合はを使用してくださいmb_substr
2010

20

1文字だけを取得する別の方法。

$str = 'abcdefghij';

echo $str{5};

7
これは間違った質問に対する正しい答えです。反対投票。
mickmackusa 2017年

コピー貼り付け以上のものが必要ですか?
Robert Pounder

注:UTF-8などのマルチバイト文字セットの場合、代わりにを使用mb_substr(i, 1)してi文字を取得する必要があります。@RobertPounder-複数のキャラクターを取得することにはならないため。
ToolmakerSteve

1
@ToolmakerSteve、そう言うなら; $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)); (phptester.netまたはweにコピーして貼り付けます)
Robert Pounder

はい、知っています。個人的には反対票を投じなかった。私はそれがどのように質問に答えないのかを観察しました。あなたが書いたもの- それは完全な答えです:phpで1つの文字を取得することから複数の文字に拡張する方法を初心者に示すこと。Q&Aに役立つ追加-ありがとうございます。
ToolmakerSteve

15

次のsubstrような関数を使用できます。

echo substr($myStr, 0, 5);

の2番目の引数substrは、どの位置から始めたいかであり、3番目の引数は、返したい文字数です。


-4

substr()を使用するだけで結果を得ることができます:

構文 substr(string、start、length)

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

出力:

 Hello

16
この非常に遅い投稿は価値がなく、ページが膨らむだけです。なぜならそれが言っていることはすべて(数年前に)すでに述べられているからです。追加するユニークで価値のあるものがない限り、回答を投稿しないでください。役に立たない、遅い投稿を思いとどまらせるためにこの回答に反対票を投じました。
mickmackusa 2017年

7年後に回答を投稿しましたか?マジ?
Varin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.