PHPでは、文字列操作は非常に一般的なタスクであり、2つの関数strrchr()とstrpos()がよく使用されます。それらはすべて開発者が文字列を処理するのに役立ちますが、使用され、実装されています。この記事では、これら2つの機能の違いを詳細に調査し、これら2つの機能をより効率的に使用するのに役立ついくつかの一般的なヒントを提供します。
strpos()は、文字列が最初に表示される場所を見つけるためのPHPの関数です。指定された文字またはサブストリングが初めて表示される文字列内の位置を返します(0からカウント)。見つからない場合、 strpos()はfalseを返します。
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span> , </span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span> [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-number">0</span></span><span> ] )
</span></span>
$ haystack :検索する文字列。
$針:見つかるキャラクターまたはサブストリング。
$ offset (オプション):検索を開始する場所。提供されていない場合、デフォルトは文字列の先頭から始まります。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, world!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"world"</span></span><span>;
</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$position</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"弦 '<span class="hljs-subst">$needle</span></span></span><span>' 存在する '</span><span><span class="hljs-subst">$haystack</span></span><span>' の位置: </span><span><span class="hljs-subst">$position</span></span><span>";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"見つかりません '<span class="hljs-subst">$needle</span></span></span><span>' 弦。";
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
出力:
<span><span>弦 </span><span><span class="hljs-string">'world'</span></span><span> 存在する </span><span><span class="hljs-string">'Hello, world!'</span></span><span> の位置: 7
</span></span>
strrchr()は、最後に表示される文字列内の指定された文字またはサブストリングの位置を見つけるために使用される関数です。 strpos()とは異なり、 strrchr()は、最後の一致する文字から文字列の端まで始まる部分を返します。
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">strrchr</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span> , </span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span> )
</span></span>
$ haystack :検索する文字列。
$針:見つかるキャラクターまたはサブストリング。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, world! Hello again!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"Hello"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strrchr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"最後の外観から '<span class="hljs-subst">$needle</span></span></span><span>' 开始的子弦是: </span><span><span class="hljs-subst">$result</span></span><span>";
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
出力:
<span><span>最後の外観から </span><span><span class="hljs-string">'Hello'</span></span><span> 开始的子弦是: Hello again!
</span></span>
検索方向: strpos() stringの最初のサブストリングの位置を見つけ、 strrchr()は最後の発生の位置を見つけます。
戻り値は異なります。Strpos ()は文字のインデックス(積分)を返し、指定された文字またはサブストリングが見つからない場合、 falseを返します。 strrchr()文字列の一部を最後の一致した位置から文字列の端まで返します。指定された文字またはサブストリングが見つからない場合、 falseを返します。
実際の開発では、文字列内の文字位置の最初と最後の両方の発生を取得する必要がある場合があります。この時点で、 Strpos()とStrrchr()の組み合わせが特に重要になります。いくつかの一般的なヒントがあります。
2つの同一の文字の間にサブストリングを抽出したいと仮定しますが、それぞれが文字列の最初と端に表示されることしか知っていません。 strpos()を使用して最初の発生位置を取得し、 strrchr()を使用して最後の発生位置を取得し、文字列インターセプト関数subst()を使用してそれらの間のコンテンツを取得できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"start-middle-end"</span></span><span>;
</span><span><span class="hljs-variable">$start_pos</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-string">"start"</span></span><span>) + </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-string">"start"</span></span><span>);
</span><span><span class="hljs-variable">$end_pos</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-string">"end"</span></span><span>);
</span><span><span class="hljs-variable">$substring</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$start_pos</span></span><span>, </span><span><span class="hljs-variable">$end_pos</span></span><span> - </span><span><span class="hljs-variable">$start_pos</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"提取的子弦是: <span class="hljs-subst">$substring</span></span></span><span>";
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
出力:
<span><span><span class="hljs-section">提取的子弦是: -middle-</span></span><span>
</span></span>
文字列から最後に表示されるキャラクターの後に、コンテンツの一部を抽出する必要がある場合があります。この時点で、 strrchr()は非常に便利です。キャラクターの最後の発生からstrrchr()を介して文字列の最後までパーツを取得し、さらに処理できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"apple,banana,grape,orange"</span></span><span>;
</span><span><span class="hljs-variable">$last_comma</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strrchr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-string">","</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"最後のコンマです: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$last_comma</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
出力:
<span><span><span class="hljs-section">最後のコンマです: orange</span></span><span>
</span></span>
strpos()は、文字列内の位置の最初の発生を見つけるために使用され、位置のインデックスを返します。
strrchr()は、文字列の最後の発生を見つけ、その位置から文字列の端までサブストリングを返すために使用されます。
2つを組み合わせて使用すると、複雑な文字列抽出と検索の問題を処理できます。
strpos()とstrrchr()を柔軟に使用することにより、文字列操作をより効率的に実行できます。使用法を習得すると、PHPプログラムを作成する際の文字列処理機能が大幅に向上します。