重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

PHP Version 4.3.11
windows2000

を使っています。

mb_ereg_matchのつかいかたなのですが、

$s1="100";

$pattarn="/100/";
var_dump (mb_ereg_match("/$pattarn/", $s1));

とすると
bool(false)

となります。実際値に入るのは日本語なのですが、数字ですらできないので何か間違っているならば教えてください。お願いします。

A 回答 (4件)

mb_ereg を使うと.* を付けなくてもいいですよ。


>$test=".*$month[i].*";
i → $i
>while (!feof($fp)) {
ってしたら、
$month[$i] が変化する前にファイルを読み終わってしまうと思いますけど
    • good
    • 0
この回答へのお礼

どうもありがとうございます。

yahoo等の検索サイトのようにスペース区切りをいくつしても検索かけられるようなものを作りたく、いろいろ考えてみたのですが・・・

>$month[$i] が変化する前にファイルを読み終わってしまうと思いますけど

そのとおりです。。。

別の対策を考えてみます。(T_T)

お礼日時:2006/05/11 11:43

#2です。


考えられそうなことは、$formが空、CSVファイルの中身がカンマ区切りになっていない且つ検索パターンが必ず含まれる、くらいでしょうか。
とりあえず$formの確認をしてみてください。
    • good
    • 0
この回答へのお礼

ありがとうございました。


>$formが空
>CSVファイルの中身がカンマ区切りになっていない且つ検索パターンが必ず含まれる

という理由ではないようなので

forでループさせないで

$test=".*$month[0].*|.*$month[1].*|.*$month[2].*|.*$month[3].*";

として、検索パターンの数を決めることにしました。
するとうまくいきましたのでこちらでやっていきます。

お礼日時:2006/05/11 13:09

こんなパターンにすればマッチはしましたよ。



.*100.*

この回答への補足

すみません。

もう少し補足させて下さい。


$month = split(" ",$form);←$formはフォームから入力された値です。
$count = count($month);

for ($i=0;$i< $count;$i++){


$test=".*$month[i].*";


while (!feof($fp)) {
list($s1,$s2,$s3,$s4) = fgetcsv($fp,1024);
if(mb_ereg_match("$test", $s1)){
print "<tr><td>$s1</td>";
print "<td>$s2</td>";
print "<td>$s3</td>";
print "<td>$s4</td></tr>";
}

} }

スペース区切りで入力された値をその数だけ検索かけたいのですが教えていただいた方法だとcsvの中身が全部マッチしてしまうのです。
なぜだかわからないのですが。
よろしくお願いします。

補足日時:2006/05/11 11:12
    • good
    • 0
この回答へのお礼

書き損じがありました。

$test=".*$month[i].*";
の部分ですが

$test=".*$month[$i].*";

でした。

すみません。これでお願いします。

お礼日時:2006/05/11 11:23

ただたんにマッチさせるだけならば、


/ はいらないと思います。

この回答への補足

すみません。/はずすとできました。

実際にやりたいのは、

$pattarn="100";

の100の部分を

$pattarn="/$test[i]/";

ループさせて正規表現をつかいたいのです。

$s1の中のどこかに$test[i]が入っていればマッチ
というものです。

フォームから入力された値をtxtから検索して
あればその文字列を出力というものを作っています。

/をはずして行ってみると
100だけのものはマッチするのですが

お茶 100
という文字列にはマッチしないのですが何かやり方はありますか?

補足日時:2006/05/11 10:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!