• 締切済み

mb_ereg

if(mb_ereg('■', $order->products[$i]['attributes'][$j]['value'])) { echo '<span style="color:#ff0000;"><div style="font-size:27px;">【<b>',A配送,'</b>】</div></span>'; } elseif (mb_ereg('659', $order->products[$i]['orders_ahead_id'])) { echo '<span style="color:#ff0000;"><div style="font-size:27px;">【<b>',B配送,'</b>】</div></span>'; } else { echo ''; } 上記の様なA配送とB配送両方に当てはまる条件の場合はC配送と言うのを足したいのですが 書き方が分かりません。

みんなの回答

noname#244856
noname#244856
回答No.2

把握しました、EUC-JPではstrposやstr_replace等の関数は使用出来ないので、基本的にmb_*の関数を使用することになります。しかし今回のケースではmb_eregを使わなくてもmb_strposで十分です。正規表現関数は基本的に重たいので最終手段にしましょう。引数の順番に注意してください。 PHP Manual - mb_internal_encoding http://www.php.net/manual/ja/function.mb-internal-encoding.php PHP Manual - mb_strpos http://www.php.net/manual/ja/function.mb-strpos.php 後は単純にプログラミングの考え方の問題ですねw // 最初に1回だけ実行 mb_internal_encoding('EUC-JP'); // 「■」が見つかったかどうかを$aに代入 $a = mb_strpos($order->products[$i]['attributes'][$j]['value'], '■') !== false; // 「659」が見つかったかどうかを$bに代入 $b = mb_strpos($order->products[$i]['orders_ahead_id'], '659') !== false; if ($a && $b) {  /* C */ } elseif ($a) {  /* A */ } elseif ($b) {  /* B */ } else {  /* None */ }

takimoto2014
質問者

お礼

うまく出来ました。有難うございました。

noname#244856
noname#244856
回答No.1

えーっとまず…PHPファイル自体の文字コードは何にしていますか?mb_ereg関数を使っているということは、何らかの特別な事情で「Shift_JIS」や「EUC-JP」を採用しているということでよろしいでしょうか? 特に事情が無ければ通常は「UTF-8」を採用します。

takimoto2014
質問者

補足

EUC-JPになります。

関連するQ&A