アプリ版:「スタンプのみでお礼する」機能のリリースについて

(1) <input type="hidden" name="word" value="大阪市">
(2) if ($wd =~ /^[\w.']+$/ ? $address =~ /$wd/i : index($address, $wd) >= 0)

(1)のHTMLタグから受け取った「大阪市」を(2)のCGIによってデータ検索します。
東大阪市だと問題ないのですが、大阪市だと東大阪市も一緒にヒットしてしまいます。
何処を書きかえれば良いか教えて下さい。お願いします。

A 回答 (4件)

$addressにはどのような形式の住所が入っているのでしょうか?



例えば市の前に都道府県があるとか、

「大阪府大阪市旭区・・・」

いきなり市から始まっているとか、

「大阪市旭区・・・」

郵便番号+空白の後に続いているとか、

「〒654-4871 大阪市旭区・・・」
    • good
    • 0
この回答へのお礼

レスありがとうございます。
if ($wd eq $address) で問題解決です!
..

お礼日時:2011/05/07 11:15

よくわからないですが、そのまま検索では駄目なんでしょうか。


$html =~ /value="大阪市"/

$wdに名前が入っているなら、文字列の比較演算子はeqです。
$wd eq "大阪市"
    • good
    • 0
この回答へのお礼

ご教示ありがとうございます。
if ($wd eq $address) で問題解決です!

お礼日時:2011/05/07 11:14

書いた直後に気づいたんですが、このindex文だと「東大阪市○○区」みたいなのにも引っかかっちゃいますね



特に理由が無いなら、普通に文字列比較した方がいいと思います。

if ($wd =~ /^[\w.']+$/ ? $address =~ /$wd/i : index($address, $wd) >= 0)

if ($wd eq $address)
    • good
    • 0
この回答へのお礼

ご教示ありがとうございます。
たしかに if ($wd eq $address) で問題は解決ですよね!
頭が凝り固まっていたようで発想の転換が出来ませんでした^^;
ありがとうございましたm(_ _)m

お礼日時:2011/05/07 11:13

これだけだと、ちょっと情報が少ないかなとは思います。


以下は、推測込みで

とりあえず$wdにvalue(ここでは大阪市)が、$addressに東大阪市なり那覇市なりが入ってるんだと理解しました。
んで、そのvalueで使われている文字種によって正規表現判定かindex判定か分けると。
となると多分、この2箇所の判定を厳しくしてやれば済むんじゃないでしょうか

<変更1>
$address =~ /$wd/i

$address =~ /\A$wd\z/i

<変更2>
index($address, $wd) >= 0

index($address, $wd) == 0

Perlの文法はかじったぐらいなので、お手元の環境で動作確認をお願いします。
    • good
    • 0

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