日本PHPユーザ会 掲示板

日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。

日本PHPユーザ会 掲示板 » PHP事はじめ » ページ内の検索の結果の一覧で表示するには

ページ内の検索の結果の一覧で表示するには

ページ: 1

投稿者 投稿
会員
登録者: 2 2009
返信数: 5
:roll: 最近勉強をはじめたのですが、つまづきました・・。

取得したページ内の特定の文字~文字に挟まれた語句を一覧で表示したい(重複は外して)のですが、どうもうまくいきません・・。 

preg_match("/○○○(.*?)×××/i", $data, $match); で
どんどん検索して、ページの最後までいくにはどうしたらいいのでしょうか・・?
preg_match_allだと、全て検索はできるのですが、重複を外して表示したりができないみたいなので、preg_matchで、条件?ループ?と想いながら、サンプルみながら、いろいろやってみたのですがうまくいきません・・。 :roll:  

どういう組み合わせでやれば、よいのでしょうか・・?教えてください。
会員
登録者: 10 2007
返信数: 71
array_unique()は重複しない要素のみの配列を返します。
今回の件ですと、preg_match_all()で取得した$matchのうち1番目の要素、$match[1]をこの関数を通すという方法もあります。
preg_match("/○○○(.*?)×××/i", $data, $match);
$uniq_match = array_unique($match[1]);

まだ試していないので期待通りになるかどうかわからないのですが、いかがでしょうか?。
会員
登録者: 2 2009
返信数: 5
kona@mさんありがとうございます。下記で削除して一覧で、出力できました。

preg_match_all("/○○○(.*?)×××/i", $data, $match);
$uniq_match = array_unique($match[1]);
print_r ($uniq_match);

でも、preg_match_allででてきた文字列をさらに操作したりしようと
想うと、どうもうまくできません・・。preg_matchで、一つづつ検索して、その都度、文字列を操作して出力×繰り返しの方が良いのかと想いやってみてるのですが、取得した$dataの最初から最後まで、止まらずに、preg_matchで、どんどん検索していくには、上や下にループ??条件??を足していくのですかね・・・? いろんな組み合わせでやってるんですが、うまくいきません・・。 どの関数で組み合わせてやれば、良いのでしょうか・・?  
« 最終編集者 poko 日時 2009 年 3 月 19 日(木) 1:19. »
会員
登録者: 10 2007
返信数: 71
検索した文字列を操作して出力するということですと、先ほどの$uniq_match(配列)foreacharray_map()array_walk()を使う方法しか思いつきませんでした。検索された文字列をまとめて配列で取得して、その配列を操作していく、という考え方です。期待されている答えになっているかどうか分かりませんがいかがでしょうか?。
会員
登録者: 2 2009
返信数: 5
kona@mさんありがとうございます。
先に、array_unique で重複をカットして、結果は、foreachで全て出力すれば、良いのですね。一個づつ出力できるので、文字も操作できます。また少し進めることができました。本当にありがとうございます。

ページ: 1

日本PHPユーザ会 掲示板 » PHP事はじめ » ページ内の検索の結果の一覧で表示するには

日本PHPユーザ会 掲示板 は UseBB 1 フォーラムソフトウェア を使用しています