文章の中から任意の文字の後から任意の文字の前までを抜き取って表示したいと思い、そのコードを調べた。(任意の文字は文字列でも可)
で、色々調べた結果、以下でできた。
$bun = "僕は「おはよう」と言った"; $start = mb_strpos($bun,'「')+1; $end = mb_strpos($bun,'」'); $mojiretu = mb_substr($bun, $start, $end-$start, UTF8); echo $mojiretu;
出力結果 = おはよう
1行にするとこんな感じ。
$mojiretu = mb_substr($bun, ($iti=(mb_strpos($bun,'「')+1)), (mb_strpos($bun,'」'))-$iti, UTF8);
指定文字が最初に現れる位置を返すstrposと、
指定位置から指定バイト分の文字列を返すsubstrの
マルチバイト対応版であるmb_strposとmb_substrを使った。
ちなみに、最後にUTF8を指定しているが、EUC等の他の文字コードでもたぶんうまくいくと思う。
ただし、指定なしの場合や、使用するページの文字コードと異なる場合は文字化けを起こす事もあるので注意が必要。
コメント