この記事ではPHPのexplode関数について解説しています。
explode関数について
explode関数は指定した文字列を文字列で分割できる関数です。
下記は、マンション売却査定プラグインのファイルの抜粋で、「explode関数」は11行目から19行目で記述しているフォームのセレクトボックスで使用しています。データベースから値を読み込んで分割して表示しています。
<div style="max-width:500px; padding:10px; margin:auto; border:solid 1px;"> <form method="post" target="_top" action-xhr="<?php echo post_permalink(); ?>" id="AjaxForm"> <?php $name = post_custom('name'); global $wpdb; $value = $wpdb->get_row("SELECT * FROM $wpdb->manshon WHERE name='$name'"); ?> <label style="display:block;">専有面積</label> <input type="number" name="a" value="<?php echo post_custom('menseki');?>" size="10" onclick="op1.value ='(計算結果)'" style="margin:10px 0; height:50px;"> <label style="display:block;">階数</label> <select name="b" class="b" onclick="op1.value ='(計算結果)'" style="margin:10px 0; height:50px;"> <?php $kaisuu = explode(",",$value->kaisuu); foreach ( $kaisuu as $kaisuu ) { $k_value = explode(":",$kaisuu); echo '<option value="'.$k_value[1].'">'.$k_value[0].'</option>'; } ?> </select> <label style="display:block;">角部屋</label> <select name="d" class="d" onclick="op1.value ='(計算結果)'" style="margin:10px 0; height:50px;"> <option value="1">いいえ</option> <option value="1.03">角部屋</option> </select></td></tr> <button type="submit" onclick="op1.value = Math.round(Number(a.value) * Number(b.value) * Number(d.value)/10000*0.97).toLocaleString()+'万円~'+Math.round(Number(a.value) * Number(b.value) * Number(d.value)/10000*1.03).toLocaleString()+'万円';" name="satei_manshon_count" style="margin:10px auto; height:50px; padding:10px; display:block;" class="manshon-button">簡易査定</button> <input readonly="" name="op1" value="(計算結果)" id="satei" style="margin:10px 0; height:50px; color:red; border:none; font-size:2rem; width:100%; text-align:right; background:#ddd;"> </form> </div> <script> jQuery(function ($) { $('#AjaxForm').submit(function(event) { // HTMLでの送信をキャンセル event.preventDefault(); var $form = $(this); var $button = $form.find('.manshon-button'); var $name = "<?php echo post_custom('name');?>"; var $menseki = $form.find('input[name="a"]').val(); var $kaisuu = $form.find('.b option:selected').text(); var $kado = $form.find('.d option:selected').text(); var $satei = $form.find('input[name="op1"]').val(); $.ajax({ url: ajaxurl, type: 'POST', data: { 'action' : 'view_sitename', 'name' : $name, 'kaisuu' : $kaisuu, 'kado' : $kado, 'menseki' : $menseki, 'satei' : $satei, }, timeout: 10000, // 単位はミリ秒 // 送信前 beforeSend: function(xhr, settings) { // ボタンを無効化し、二重送信を防止 $button.attr('disabled', true); }, // 応答後 complete: function(xhr, textStatus) { // ボタンを有効化し、再送信を許可 $button.attr('disabled', false); }, // 通信成功時の処理 success: function(result, textStatus, xhr) { return; }, // 通信失敗時の処理 error: function(xhr, textStatus, error) { alert('エラー暫くたってからお試しください。'); } }); // … }); }); </script>