人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで特定の文字列を検索し、一致した文字から「○文字表示する」というのを作っています。

$text = "本日は晴天なり本日は晴天なり"; //検索対象
$keyword = "本日"; //検索語句

$array = explode("$keyword",$text);
//一致すればそこから全角100文字表示
if(!empty($array[1])){
$hit_text = $keyword.$array[1];
echo substr($hit_text,0,200)."...";
}

しかし、$text内に同じ検索語句がある場合、途中で配列に代入されてしまい、文字数が短くなります。
より柔軟性のあるコードの書き方、アドバイスをいただければと思います。

●質問者: k27w
●カテゴリ:ウェブ制作
✍キーワード:echo EMPTY keyword PHP アドバイス
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● kent013
●100ポイント

strposを使えばいいと思います.

mbstringを使えば,全角文字をきちんと取り扱ってくれます.

<?php
ini_set("mbstring.internal_encoding", "sjis");
$text = "本日は晴天なり本日は晴天なりうがほげほげほげほげほげもげもげもげもげ"; //検索対象
$keyword = "うが"; //検索語句

$shoten = getSubStringFromKeyword($text, $keyword, 10);
var_dump($shoten);

function getSubStringFromKeyword($text, $keyword, $num){
 $pos = mb_strpos($text, $keyword);
 if($pos === false){
 return null;
 }
 return mb_substr($text, $pos, $num);
}
?>

一行目のini_setはphp.iniでmbstring.internal_encodingを設定してあれば必要ありません.

◎質問者からの返答

参考にさせていただきます。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ