質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

1297閲覧

PHP 曜日 日本語表記したい

t_suzuki1009

総合スコア28

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2018/10/12 01:56

前提・実現したいこと

テスト環境WordPress 4.9.8 (Twenty Fifteen テーマ)にて
https://kurubusi.net/products/free/wordpress-plug-in/krc-cast-manager/
上記のプラグインを導入し、出勤スケジュールページを作っています。
当方、PHPの知識がなく困っています。
どなたかお力添えお願いします。

発生している問題・エラーメッセージ

<h2 class="sub_h"></h2> で囲まれているタグ内は日本語表記できていますが <nav class="krc_calendar clearfix"> <ul> <li class="target"><a href="http://hoge/schedule/?works=&#10;&#9;2018-10-12">10/12(FRI)</a></li> <li class="sat"><a href="http://hoge/schedule/?works=&#10;&#9;2018-10-13">10/13(SAT)</a></li> <li class="sun"><a href="http://hoge/schedule/?works=&#10;&#9;2018-10-14">10/14(SUN)</a></li> <li class="mon"><a href="http://hoge/schedule/?works=&#10;&#9;2018-10-15">10/15(MON)</a></li> <li class="tue"><a href="http://hoge/schedule/?works=&#10;&#9;2018-10-16">10/16(TUE)</a></li> <li class="wed"><a href="http://hoge/schedule/?works=&#10;&#9;2018-10-17">10/17(WED)</a></li> <li class="thu"><a href="http://hoge/schedule/?works=&#10;&#9;2018-10-18">10/18(THU)</a></li> </ul> </nav> のように h2タグ内は日本語表記になっていますが liタグ内の曜日が英語表記なのでここも日本語に変更したいのです。 どこをどう書き換えればよいのかわからず困っております。

該当のソースコード

function schedulesHtml() { //ショートコードの中身 $day = isset($_GET["works"]) ? $_GET['works'] : date("Y-m-d"); $works = outschedule($day); $len = 6; //+1 $week = array("日", "月", "火", "水", "木", "金", "土"); $w = date('w', strtotime($day)); echo '<header class="sub_h_header">'; echo '<p class="en_h">SCHEDULE FOR ' . date('n.j', strtotime($day)) . '</p>'; echo '<h2 class="sub_h">' . date('n/j', strtotime($day)); echo '(' . $week[$w] . ')'; echo 'の出勤スケジュール</h2>'; echo '</header>'; echo '<nav class="krc_calendar clearfix"><ul>'; for ($i = 0; $i <= $len; $i++) { $y = date('D', strtotime('+'.$i.' day')); if ( date('Y-m-d', strtotime('+'.$i.' day')) == $day ) $y = 'target'; echo '<li class="' . mb_strtolower($y) . '"><a href="' . home_url( '' ) . '/schedule/?works=' . date(' Y-m-d', strtotime('+'.$i.' day')) . '">' . strtoupper(date('n/j(D)', strtotime('+'.$i.' day'))) . '</a></li>'; } echo '</ul></nav>'; if (!$works) { //予定がない場合 echo '<br>'; } else if ( $works !='rest' ) { echo '<div class="clearfix p70">'; //postid順に配列に入っているのでs_order順にした配列を作る $works_array = array(); foreach($works as $id => $val){ $works_array[$val["s_order"]] = $id; } ksort($works_array); foreach ($works_array as $rder => $id) { $args = array( 'post_type' => 'krc_cast', 'post_type' => 'krc_cast', 'post__in' => array($id), ); query_posts($args); while ( have_posts() ) : the_post(); get_template_part( 'content', 'cast' ); endwhile; wp_reset_query(); } echo '</div>'; } else { //休み echo '<br>'; } } add_shortcode('scheduleshtml', 'schedulesHtml'); //[scheduleshtml]というショートコードを作成

試したこと

補足情報(FW/ツールのバージョンなど)

さくらインターネット共有サーバー
PHP 7.2.10 (モジュール版)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2018/10/12 02:00

「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを、出ているエラーなどと併せて、具体的に記述されたほうが回答を得られやすいと思います。
guest

回答3

0

以下のコードの中でdate('n/j(D)'と記述がありますので、ここが10/13(SAT)</a>を生成している箇所だと思います。
PHP:date-Manualにあるように、フォーマットで「D」をしているので英語表示になっているわけですね。

php

1for ($i = 0; $i <= $len; $i++) { 2 $y = date('D', strtotime('+'.$i.' day')); 3 if ( date('Y-m-d', strtotime('+'.$i.' day')) == $day ) $y = 'target'; 4 echo '<li class="' . mb_strtolower($y) . '"><a href="' . home_url( '' ) . '/schedule/?works=' . date(' 5 Y-m-d', strtotime('+'.$i.' day')) . '">' . strtoupper(date('n/j(D)', strtotime('+'.$i.' day'))) . '</a></li>'; 6 }

以下修正例(動作未確認のため、微調整掛けて下さい)

php

1$week = array("日", "月", "火", "水", "木", "金", "土"); 2// 処理略 3for ($i = 0; $i <= $len; $i++) { 4 $y = date('D', strtotime('+'.$i.' day')); 5 if ( date('Y-m-d', strtotime('+'.$i.' day')) == $day ) $y = 'target'; 6 echo '<li class="' . mb_strtolower($y) . '"><a href="' . home_url( '' ) . '/schedule/?works=' . date(' 7 Y-m-d', strtotime('+'.$i.' day')) . '">' . date('n/j', strtotime('+'.$i.' day')) . '(' . $week[date('w', strtotime('+'.$i.' day'))] . ')' .'</a></li>'; 8 }

投稿2018/10/12 02:29

mikan_s4n

総合スコア377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

PHP

1 for ($i = 0; $i <= $len; $i++) { 2 $y = date('D', strtotime('+'.$i.' day')); 3 if ( date('Y-m-d', strtotime('+'.$i.' day')) == $day ) $y = 'target'; 4 echo '<li class="' . mb_strtolower($y) . '"><a href="' . home_url( '' ) . '/schedule/?works=' . date(' 5 Y-m-d', strtotime('+'.$i.' day')) . '">' . strtoupper(date('n/j(D)', strtotime('+'.$i.' day'))) . '</a></li>'; 6 }

曜日が英語で出てきてしまうのは、ここのdate('n/j(D)')で曜日の表示フォーマットをDとしているからです。
date

コード内の以下の部分

PHP

1 $week = array("日", "月", "火", "水", "木", "金", "土");

で曜日の定義はしているようなので、以下の部分を変更してあげればよいかと。

PHP

1strtoupper(date('n/j(D)', strtotime('+'.$i.' day'))) 2//=>MM/DD(MON) のように出力 34date('n/j', strtotime('+'.$i.' day')) . '(' . $week[date('w', strtotime('+'.$i.' day'))] . ')' 5//=>MM/DD(月) のように出力

追記
色々誤解を招く記述だったので訂正。

投稿2018/10/12 02:23

編集2018/10/12 02:52
madoka9393

総合スコア992

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

madoka9393

2018/10/12 02:40

一番大事な部分が誤ってた…。
t_suzuki1009

2018/10/12 02:52

早い回答をありがとうございます。皆様、的確でわかりやすく、皆様一律ベストアンサーとしたいところですが、madoka9393様に一番早かったということでベストアンサーとさせて頂きたいと思います。 感謝です。
guest

0

strtoupper(date('n/j(D)', strtotime('+'.$i.' day')))の部分を
date('n/j', strtotime('+'.$i.' day')) . '(' .$week[date('w', strtotime('+'.$i.' day'))] . ')'にかえてください。

投稿2018/10/12 02:30

編集2018/10/12 02:33
papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2018/10/12 02:32 編集

1分遅かったし、間違ってた。
madoka9393

2018/10/12 02:34 編集

対象部分全て書き換えると「M/D」の部分が消えてしまうのでは…。 と書いている間に気付かれたようで。
papinianus

2018/10/12 02:43

おっしゃるとおりでした。というか、正解が来たので消したかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問