[サーバ]
ホスト&契約タイプ:さくらスタンダード
ネットワーク:インターネット
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
どなたか原因をお分かりになる方がおられましたらご教示下さい。
よろしくお願い致します。
ajaxsearch1.84に全角スペースを入れるとエラー
Re: ajaxsearch1.84に全角スペースを入れるとエラー
当てずっぽに近い対症療法ですが
/assets/snippets/ajaxSearch/classes/search.class.inc.php
上記のブロックを
このように書き換えてみるとどうでしょう?「$text = mb_convert_kana($text,s,"utf-8");」を追記します。
/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;
}
Re: ajaxsearch1.84に全角スペースを入れるとエラー
yamaさん
お返事ありがとうございます。
教えていただいた方法を試してみたのですが、挙動は変わりませんでした。
お返事ありがとうございます。
教えていただいた方法を試してみたのですが、挙動は変わりませんでした。
Re: ajaxsearch1.84に全角スペースを入れるとエラー
自分の環境では再現しませんが、explode()されたアイテムのどれかにNULLがあるのでしょうね。
ワーニング自体は"@"を頭に付加すれば出なくなると思いますが、下の処理が気になります。
assets/snippets/ajaxSearch/classes/search.class.inc.php (L1287) のgetSearchWords()
半角空白か全角空白を区切り文字として検索対象文字列を抜き出すとか・・・(自信なしです ^^;)
ワーニング自体は"@"を頭に付加すれば出なくなると思いますが、下の処理が気になります。
assets/snippets/ajaxSearch/classes/search.class.inc.php (L1287) のgetSearchWords()
コード: 全て選択
else $searchList = explode(' ',$search);
Re: ajaxsearch1.84に全角スペースを入れるとエラー
yamaさんの環境では再現しないですかぁ。
もう一度インストールしてチャレンジしてみます。
@はどの行の頭につければよいのでしょうか?
もう一度インストールしてチャレンジしてみます。
@はどの行の頭につければよいのでしょうか?
Re: ajaxsearch1.84に全角スペースを入れるとエラー
Error: mb_strpos()dimm さんが書きました:@はどの行の頭につければよいのでしょうか?
と出ているので、@ mb_strposとすればよいと思います。とりあえず目障りなワーニングを非表示にしてから落ち着いてバグ探しをするとよいかもですね。
mb_strpos( )に実際に渡ってくる値がどうなってるのか気になるので、直前の行で echo $text; echo $searchTerm; などとするとヒントになりそうです。
getSearchWordsファンクションのreturn $searchList;の直前行で echo $search; を入れるのもよいかな?
(ヒントが出てくるだけで状況は変わりません)
Re: ajaxsearch1.84に全角スペースを入れるとエラー
原因がわかりました、下記のコード158行目に入れていたのが原因のようです。
しかし、このコードを取ってしまうと全角で区切った検索をした場合検索結果表示されません。
しかし、このコードを取ってしまうと全角で区切った検索をした場合検索結果表示されません。
コード: 全て選択
// zenkaku space=>hankaku space
$searchString=mb_convert_kana($searchString, s, "UTF-8");