<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>文字列判定 &#8211; ケケンタの独学ITブログ</title>
	<atom:link href="https://kekenta-it-blog.com/tag/%E6%96%87%E5%AD%97%E5%88%97%E5%88%A4%E5%AE%9A/feed/" rel="self" type="application/rss+xml" />
	<link>https://kekenta-it-blog.com</link>
	<description>プログラミングやWeb制作の情報を発信</description>
	<lastBuildDate>Tue, 18 Mar 2025 01:55:32 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://kekenta-it-blog.com/wp-content/uploads/2023/07/cropped-KEKENTA-BLOG-32x32.png</url>
	<title>文字列判定 &#8211; ケケンタの独学ITブログ</title>
	<link>https://kekenta-it-blog.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【PHP】特定の文字列が含まれているか簡単に判定する方法</title>
		<link>https://kekenta-it-blog.com/php-check-hasval/</link>
					<comments>https://kekenta-it-blog.com/php-check-hasval/#respond</comments>
		
		<dc:creator><![CDATA[ケケンタ]]></dc:creator>
		<pubDate>Mon, 05 Aug 2024 02:07:22 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webアプリ]]></category>
		<category><![CDATA[文字列判定]]></category>
		<guid isPermaLink="false">https://kekenta-it-blog.com/?p=9688</guid>

					<description><![CDATA[<p><img src="https://kekenta-it-blog.com/wp-content/uploads/2024/08/eye-catch__php-check-hasval__9688-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>今回ご紹介するのは PHPで特定の文字列が含まれているかを簡単に判定する方法 です。 【ソースコード】特定の文字列が含まれているか判定する 検索対象の文字列にマルチバイト（日本語など）を含む場合は「【補足】マルチバイト文 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://kekenta-it-blog.com/wp-content/uploads/2024/08/eye-catch__php-check-hasval__9688-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>
<p class="wp-block-paragraph">今回ご紹介するのは</p>



<p class="has-text-align-center is-style-big_kakko_box wp-block-paragraph"><strong>PHPで特定の文字列が含まれているかを簡単に判定する方法</strong></p>



<p class="wp-block-paragraph">です。</p>


<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/alone-php-study/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">PHPはこうして習得した！約１年間の勉強内容【プログラミング独学】</span>
			</a>
		</div>

<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/php-deploy-xserver-for-zip/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">【PHP】エックスサーバーへデプロイする方法【初心者でも簡単！】</span>
			</a>
		</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2025/03/eye-catch__school-php-and-wp__14099-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://kekenta-it-blog.com/school-php-and-wp/">PHPやWordPressを学ぶのにおすすめのプログラミングスクール【７選】</a>
						<span class="p-blogCard__excerpt">僕はこれまで独学でPHPを学習してきました。結論から言えば、それでもPHPを習得することはできました。 しかし、それに費やした累計学習期間は1年ほど。モチベーション&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h2 class="wp-block-heading">【ソースコード】特定の文字列が含まれているか判定する</h2>



<p class="is-style-icon_info wp-block-paragraph"><strong>検索対象の文字列にマルチバイト（日本語など）を含む場合</strong>は「<a href="#anc-multibyte-search">【補足】マルチバイト文字列でキーワードを検索する場合</a>」をご覧ください。</p>



<p class="is-style-bg_stripe wp-block-paragraph">以下の<strong>ソースコード</strong>で<strong>「対象の文字列」に「キーワード」が含まれているかどうかを判定</strong>することが可能です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>if( strpos(&#39;対象の文字列&#39;,(string)&#39;キーワード&#39; ) !== false ){
    // 文字列が含まれていた場合の処理
}</code></pre></div>



<div class="wp-block-group is-style-big_icon_good"><div class="wp-block-group__inner-container">
<p class="is-style-bg_stripe wp-block-paragraph"><strong>strpos()</strong>は<strong>「対象の文字列」内に「キーワード」が何番目にあるかを調べる関数</strong>です。<br>※正確には「何バイト目」にあるかを調べてくれます。</p>



<ul class="wp-block-list is-style-check_list -list-under-dashed">
<li>「キーワード」が見つかった場合……見つかった位置番号を返す</li>



<li>「キーワード」が見つからなかった場合……falseを返す</li>
</ul>
</div></div>



<p class="is-style-balloon_box u-mb-ctrl u-mb-10 wp-block-paragraph"><strong>注意点①</strong></p>



<p class="has-border -border02 is-style-bg_stripe wp-block-paragraph">strpos()の返り値を判定する場合は、<span class="swl-marker mark_orange"><strong>必ず「===」もしくは「!==」演算子を使用</strong></span>してください。<br>（※「==」や「!=」ではダメということ）<br><br>strpos()は<strong>false</strong>または<strong>数値</strong>を返す関数ですが、数値の中には「0」が含まれる場合があります。<br>「0」はfalseの意味も持つため、if文で評価するときは<strong>型まで確認しないと正しく判定できない可能性</strong>があります。</p>



<p class="is-style-balloon_box u-mb-ctrl u-mb-10 wp-block-paragraph"><strong>注意点②</strong></p>



<p class="has-border -border02 is-style-bg_stripe wp-block-paragraph">「キーワード」は明示的に<strong>(string)&#8217;キーワード&#8217;</strong>のように<strong><span class="swl-marker mark_orange">文字列型にキャスト</span></strong>しましょう。<br><br>※<a href="https://www.php.net/manual/ja/function.strpos.php">PHP公式ドキュメント</a>で推奨されているため（詳しくは【パラメータ】→【needle】の項目をご覧ください。）</p>



<p class="is-style-bg_stripe wp-block-paragraph">【参考】<a href="https://www.php.net/manual/ja/function.strpos.php">strpos（PHP公式ドキュメント）</a></p>



<h3 class="wp-block-heading">使用例</h3>



<p class="is-style-balloon_box wp-block-paragraph">「キーワード」が<strong>含まれている</strong>場合</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$val     = &#39;abcdefg&#39;;
$keyword = &#39;bc&#39;;

if( strpos( $val, (string) $keyword ) !== false ){
    // $keywordが含まれている場合の処理
}</code></pre></div>



<p class="is-style-balloon_box wp-block-paragraph">キーワードが<strong>含まれていない</strong>場合</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$val     = &#39;abcdefg&#39;;
$keyword = &#39;bc&#39;;

if( strpos( $val, (string) $keyword ) === false ){
    // $keywordが含まれていない場合の処理
}</code></pre></div>



<h2 class="wp-block-heading" id="anc-multibyte-search">【補足】マルチバイト文字列でキーワードを検索する場合</h2>



<p class="is-style-icon_pen wp-block-paragraph">注意しなくてはならないこととして、<strong>マルチバイト文字列を対象にキーワード検索する場合、strpos関数では正確な位置を取得できない可能性がある</strong>という点が挙げられてます。</p>



<p class="wp-block-paragraph">前章でご紹介したstrpos関数は、あくまでもその文字列内でキーワードが<strong>「何文字目か」ではなく、「何バイト目」に出現するか</strong>を調べてくれる関数です。</p>



<p class="wp-block-paragraph">以下の例をご覧ください。</p>



<p class="is-style-balloon_box wp-block-paragraph"><strong>具体例</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$val     = &#39;今日の朝食はパンだった&#39;;
$keyword = &#39;パン&#39;;

echo strpos( $val, $keyword ); // 出力結果：16
echo mb_strpos( $val, $keyword ); // 出力結果：6</code></pre></div>



<p class="wp-block-paragraph">このように、マルチバイト文字列を対象として検索した場合、mb_strpos()では正しい位置を返してくれるのに対し、</p>



<p class="wp-block-paragraph"><strong>strpos()は欲しい検索位置を返してくれません。</strong></p>



<p class="wp-block-paragraph">（繰り返しになりますが、strpos()はあくまで「何バイト目に出現するか」を調べてくれる関数であるためです）</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p><strong>検索対象の文字列で扱っているのがマルチバイトなのかどうか</strong>によって、適切な方を使用するようにしましょう！</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="is-style-bg_stripe wp-block-paragraph">【参考】<a href="https://www.php.net/manual/ja/function.mb-strpos.php">mb_strpos（PHP公式ドキュメント）</a></p>



<h2 class="wp-block-heading">まとめ</h2>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>以上が<strong>PHPで特定の文字列が含まれているかどうかを判定する方法</strong>でした！</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="wp-block-paragraph">strpos()関数を使用すれば簡単に文字列が含まれているかどうかを判定することが可能です。</p>



<p class="wp-block-paragraph"><strong>注意点が２つ</strong>あるため、実際にお使いいただく際はその点にお気を付けください。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl2" data-colset="col3"><div class="cap_box_ttl"><span><span data-icon="LsInfo" data-id="0" style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ4IDQ4Ij48cGF0aCBkPSJNMjQgMUMxMS4zIDEgMSAxMS4zIDEgMjRzMTAuMyAyMyAyMyAyMyAyMy0xMC4zIDIzLTIzUzM2LjcgMSAyNCAxem0wIDExLjJjMS45IDAgMy41IDEuNiAzLjUgMy41cy0xLjYgMy41LTMuNSAzLjUtMy41LTEuNi0zLjUtMy41IDEuNi0zLjUgMy41LTMuNXptNSAyMi42YzAgLjYtLjQgMS0xIDFoLThjLS42IDAtMS0uNC0xLTF2LTJjMC0uNi40LTEgMS0xaDEuNXYtNmwtMS44LTIuNGExIDEgMCAwIDEgLjgtMS42aDVjLjYgMCAxIC40IDEgMXY5SDI4Yy42IDAgMSAuNCAxIDF2MnoiPjwvcGF0aD48L3N2Zz4=)" aria-hidden="true" class="swl-inline-icon"> </span><strong>注意点</strong></span></div><div class="cap_box_content">
<ul class="wp-block-list -list-under-dashed is-style-num_circle">
<li>strpos()の返り値を判定する場合は、<span class="swl-marker mark_orange"><strong>必ず「===」もしくは「!==」演算子を使用</strong></span>する</li>



<li>「キーワード」は明示的に<strong>(string)&#8217;キーワード&#8217;</strong>のように<strong><span class="swl-marker mark_orange">文字列型にキャスト</span></strong>する</li>
</ul>
</div></div>



<p class="wp-block-paragraph">また、<strong><span class="swl-marker mark_yellow">マルチバイト文字列を対象にキーワード検索する場合は、mb_strpos()を使用する</span></strong>ようにしましょう。</p>



<p class="wp-block-paragraph">それでは最後までご覧いただきありがとうございました！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kekenta-it-blog.com/php-check-hasval/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
