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

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

ただいまの
回答率

87.96%

urlパラメーターを2つ同時に送信したい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 469

score 11

前提・実現したいこと

index.phpの後にurlパラメーターとして、page_id(実装済み)とs_number2=<?php echo $numbers->getNumber()?>の両方を同時に送信できるようにしたい。


発生している問題

コードをコピペしたので、ドッド[.]、バックスラッシュ[\]などがなぜあるのかわからず、[&]で同時に送信しようとしてもできないため苦戦しています。
出来れば、ドットやバックスラッシュが何を意味しているのかを教えて貰えるととてもありがたいです。


該当のソースコード

使用言語:php

ソースコード
else {
?><a href="#"><div class="pages"><?php echo '<a href=\'/saikano0827.php/index.php?page_id='. $i. '\')>'. $i. '</a>'. ' ';?>

補足情報(FW/ツールのバージョンなど)
PHP7.3.2を使っています。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2019/10/27 13:47

    コードはマークダウンのcode機能にて、なるべく他者がコピペで再現できる内容で提示してください。質問者判断で切り出しすぎると実際の問題を再現できず的確なアドバイスになりません

    キャンセル

回答 2

checkベストアンサー

+2

提示いただいたコードだと、最終的に出力したい文字列は↓のようなものですよね?

<a href='/saikano0827.php/index.php?page_id=1'>1</a>

この文字列をそのままechoで出力してみます。

echo '<a href='/saikano0827.php/index.php?page_id=1'>1</a>';

これは正しく出力されません。(エラーになります)

出力したい文字列の中に'が含まれており、それが文字列を表すのか、echoの終了を表すのかが判別できないからです。

そのため、'のような特別な意味を持った記号を出力するためには「エスケープ」という処理が必要になります。

エスケープは特別な意味を持つ記号の直前にバックスラッシュを入れて行います。

echo '<a href=\'/saikano0827.php/index.php?page_id=1\'>1</a>';

このバックスラッシュを「エスケープシーケンス」と呼びます。


ドットは文字列をつなげるために使います。

echo 'test'.'abc'; // testabc と出力される

$index = 1;
echo 'test'.$index; // test1 と出力される

エスケープシーケンスとドットを踏まえて提示されたコードを見ると、意味が分かると思います。
()は不要だと思いますが)

echo '<a href=\'/saikano0827.php/index.php?page_id='. $i. '\')>'. $i. '</a>'. ' ';

&でつなげるなら↓のような感じでしょうか。

echo '<a href=\'/saikano0827.php/index.php?page_id='. $i. '&s_number2='. $numbers->getNumber() .'\'>'. $i. '</a>';

\'の代わりに"を使用すればもう少しシンプルになります。

'"は区別され、'内で"はエスケープ不要だからです。

というか、HTMLの属性は通常は"で囲みますのでこちらの方が使うことが多いです。

echo 'test"1"test'; // test"1"test と出力される = 「"」はエスケープ不要

<?php echo '<a href="/saikano0827.php/index.php?page_id='. $i. '&s_number2='. $numbers->getNumber() .'">'. $i. '</a>';?>

どちらも基礎部分ですので、まずは↓のようなサイトでPHPの基本構文を学習された方がいいかと思います。
お節介でしたらすみません。

ドットインストール : PHP入門

Progate : PHP


追記

PHP公式のドキュメントにPHPマニュアルがありますのでこちらも参考にしてください。

このマニュアルには主に関数リファレンス言語リファレンスがあり、正確な情報はこちらに載っています。
調べ物をする際にはまずこちらを当たると良いでしょう。

今回のドットは言語リファレンス内の文字列演算子に、エスケープシーケンスは同じく言語リファレンス内の文字列に記載があります。

文法部分の学習が終われば機能付録も読んでいくことになると思いますので、どのようなことが記載されているかぐらいは見ておいた方が良いでしょう。
(フレームワークを使用するとあまり意識しない部分かもしれませんが必須知識です)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/27 18:26

    追記ありがとうございます。
    これだけきちんと書かれていたらあとから見る人も参考になりやすいかと思います(ここまでしてくれると思ってなかったので高評価しました。)

    キャンセル

  • 2019/10/27 18:52

    いえ、こちらこそご指摘ありがとうございました。

    キャンセル

  • 2019/10/28 19:31

    おかげで解決できました!ありがとうございます!
    お二人の意見も今後学習していく上で参考にさせていただきます!

    キャンセル

+1

参考までに。
プログラミング的な書き方だと m.kagawaさんのようになりますが
テンプレート的な書き方だとこんなかんじ

<a href="/saikano0827.php/index.php?page_id=<?php echo $i ?>&s_number2=<?php echo $numbers->getNumber() ?>"><?php echo $i ?></a>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/28 19:29

    わかりやすくまとめていただきありがとうございます!!

    キャンセル

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

  • ただいまの回答率 87.96%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る