ページ 11

ajaxsearch1.84に全角スペースを入れるとエラー

Posted: 2009年11月25日(水) 17:02
by dimm
[サーバ]
 ホスト&契約タイプ:さくらスタンダード
 ネットワーク:インターネット
 PHPバージョン:php5.2.5
 DB:(例 MySQL5.1
[modx]
 バージョン:1.0.2J
 アドオン:ajaxsearch1.84



いつもお世話になっております。ajaxsearch1.84に関してご質問させていただきます。
検索語句の前後どちらかに全角スペースを入っていると検索ボタンを押したとき、下記のエラーが出てしまいます。


« MODx Parse Error »
MODx encountered the following error while attempting to parse the

requested resource:
« PHP Parse Error »

PHP error debug
Error: mb_strpos() [function.mb-strpos]: Empty delimiter
Error type/ Nr.: Warning - 2
File:

/home/1031hp/www/assets/snippets/ajaxSearch/classes/search.clas

s.inc.php
Line: 1198
Line 1198 source: $wordLeft = $mbStrpos($mbStrtolower

($text), $mbStrtolower($searchTerm));

Parser timing
MySQL: 0.0969 s (53 Requests)
PHP: 0.0372 s
Total: 0.1340 s



どなたか原因をお分かりになる方がおられましたらご教示下さい。
よろしくお願い致します。

Re: ajaxsearch1.84に全角スペースを入れるとエラー

Posted: 2009年11月26日(木) 10:41
by yama
当てずっぽに近い対症療法ですが

/assets/snippets/ajaxSearch/classes/search.class.inc.php

コード: 全て選択

  function defaultStripOutput($text){

    if ($text !== ''){
      // replace line breaking tags with whitespace
      $text = stripLineBreaking($text);
      // strip modx sensitive tags
      $text = stripTags($text);
      // strip Jscripts
      $text = stripJscripts($text);
      // strip html tags. Tags should be correctly ended
      $text = stripHTML($text);
    }
    return $text;
  }
上記のブロックを

コード: 全て選択

  function defaultStripOutput($text){

    if ($text !== ''){
      // replace line breaking tags with whitespace
      $text = mb_convert_kana($text,s,"utf-8");
      $text = stripLineBreaking($text);
      // strip modx sensitive tags
      $text = stripTags($text);
      // strip Jscripts
      $text = stripJscripts($text);
      // strip html tags. Tags should be correctly ended
      $text = stripHTML($text);
    }
    return $text;
  }
このように書き換えてみるとどうでしょう?「$text = mb_convert_kana($text,s,"utf-8");」を追記します。

Re: ajaxsearch1.84に全角スペースを入れるとエラー

Posted: 2009年11月27日(金) 00:06
by dimm
yamaさん

お返事ありがとうございます。
教えていただいた方法を試してみたのですが、挙動は変わりませんでした。

Re: ajaxsearch1.84に全角スペースを入れるとエラー

Posted: 2009年11月27日(金) 12:38
by sama55
自分の環境では再現しませんが、explode()されたアイテムのどれかにNULLがあるのでしょうね。
ワーニング自体は"@"を頭に付加すれば出なくなると思いますが、下の処理が気になります。
assets/snippets/ajaxSearch/classes/search.class.inc.php (L1287) のgetSearchWords()

コード: 全て選択

    else $searchList = explode(' ',$search);
半角空白か全角空白を区切り文字として検索対象文字列を抜き出すとか・・・(自信なしです ^^;)

Re: ajaxsearch1.84に全角スペースを入れるとエラー

Posted: 2009年11月29日(日) 12:23
by dimm
yamaさんの環境では再現しないですかぁ。
もう一度インストールしてチャレンジしてみます。

@はどの行の頭につければよいのでしょうか?

Re: ajaxsearch1.84に全角スペースを入れるとエラー

Posted: 2009年11月29日(日) 12:34
by yama
dimm さんが書きました:@はどの行の頭につければよいのでしょうか?
Error: mb_strpos()

と出ているので、@ mb_strposとすればよいと思います。とりあえず目障りなワーニングを非表示にしてから落ち着いてバグ探しをするとよいかもですね。

mb_strpos( )に実際に渡ってくる値がどうなってるのか気になるので、直前の行で echo $text; echo $searchTerm; などとするとヒントになりそうです。

getSearchWordsファンクションのreturn $searchList;の直前行で echo $search; を入れるのもよいかな?
(ヒントが出てくるだけで状況は変わりません)

Re: ajaxsearch1.84に全角スペースを入れるとエラー

Posted: 2009年11月29日(日) 12:37
by dimm
原因がわかりました、下記のコード158行目に入れていたのが原因のようです。
しかし、このコードを取ってしまうと全角で区切った検索をした場合検索結果表示されません。

コード: 全て選択

      // zenkaku space=>hankaku space
      $searchString=mb_convert_kana($searchString, s, "UTF-8");