- 締切済み
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配送と言うのを足したいのですが 書き方が分かりません。
- みんなの回答 (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 */ }
えーっとまず…PHPファイル自体の文字コードは何にしていますか?mb_ereg関数を使っているということは、何らかの特別な事情で「Shift_JIS」や「EUC-JP」を採用しているということでよろしいでしょうか? 特に事情が無ければ通常は「UTF-8」を採用します。
補足
EUC-JPになります。
お礼
うまく出来ました。有難うございました。