いつまで続くのか、何を書くのか、それもまた流れのままに 頭の中にまとまらないものがあるから そんなのがふと出た時に書いていく
僕のネット帳
スポンサーサイト
-----------  CATEGORY: スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
ページトップへ
PHP 特定範囲内の文字列検査
2008-01-16-Wed  CATEGORY: php
重複チェックしたくて特定文字列間を走査するようにしてみた。
例えば、新たにリンクを追加するときに重複がないかとか。。。
次のようなテキストファイルがあったとしよう。
ファイル名:rink.txt

中身
宮本、心理テスト英語で300問
日本サッカー最高峰の頭脳を持つ宮本に、世界最先端の技術が用いられた。
クラブのスポンサー「レッドブル」はF1チームなどにも出資。
選手の肉体データを測定、管理しており、宮本も10日にメディカルチェックを受けた。
医療検査以外に心理テストまで初体験。
反射能力や集中力テストも受け、頭脳派らしく高得点をマークしたという。

<?php

//*特定範囲内の文字列検査

//***検査対象ファイルのアドレス
$save_file = "rink.txt";

//***検査範囲(特定文字列間を検査)
$search_top = "最高峰の頭脳";
$search_end = "初体験";

//***検査文字列
$find = array("300問","レッドブル","心理テスト","高得点");

//****以下実行
kensa($save_file,$search_top,$search_end,$find);

//***特定範囲内の文字列検査用関数
//***$a:検査対象ファイル,$b:検査範囲開始文字列,$c:検査範囲ラスト文字列,$d:検査文字列(配列で複数指定)
//***$aの中の$bから$cまでの間に$dの文字列があるかを調べる。
function kensa($a,$b,$c,$d) {

$kensa_file = @file_get_contents($a);

$num_top = strpos($kensa_file,$b);
$num_end = strpos($kensa_file,$c);

$get = substr($kensa_file,$num_top,$num_end - $num_top);

echo $get;

$count = count($d);

for ($i=0; $i < $count; $i++) {
if (ereg($d[$i],$get) == true) {
echo "重複のヨカン-->".$d[$i];
echo '<br />';
}
}
}
?>

上記の例だと「最高峰の頭脳」から「初体験」までを走査する。
よって、
重複のヨカン-->レッドブル
重複のヨカン-->心理テスト

が結果として出る。
ちなみにテキストファイルの文字コードはutf-8じゃないとエラーがでるはず。
違う文字コードの場合は変換しないとダメかな多分。
あと、常に決まっているタグ内の重複検査の為に作ったので、通常テキストで検査するには色々加えないとダメです念のため。
ページトップへ  トラックバック0 コメント0
コメント

管理者にだけ表示を許可する
 
トラックバック
TB*URL
<< 2017/05 >>
S M T W T F S
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -


余白 Copyright © 2005 僕のネット帳. all rights reserved.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。