質問: 前提・実現したいこと ---------- index.phpの後にurlパラメーターとして、page_id(実装済み)とs_number2=getNumber()?>の両方を同時に送信できるようにしたい。 --- 発生している問題 -------- コードをコピペしたので、ドッド[.]、バックスラッシュ[\]などがなぜあるのかわからず、[&]で同時に送信しようとしてもできないため苦戦しています。 出来れば、ドットやバックスラッシュが何を意味しているのかを教えて貰えるととてもありがたいです。 --- 該当のソースコード --------- 使用言語:php ソースコード else { ?>'. $i. ''. ' ';?> 補足情報(FW/ツールのバージョンなど) PHP7.3.2を使っています。
回答: 提示いただいたコードだと、最終的に出力したい文字列は↓のようなものですよね? ``` 1 ``` この文字列をそのままechoで出力してみます。 ``` echo '1'; ``` これは正しく出力されません。(エラーになります) 出力したい文字列の中に`'`が含まれており、それが文字列を表すのか、echoの終了を表すのかが判別できないからです。 そのため、`'`のような特別な意味を持った記号を出力するためには「エスケープ」という処理が必要になります。 エスケープは特別な意味を持つ記号の直前にバックスラッシュを入れて行います。 ``` echo '1'; ``` このバックスラッシュを「エスケープシーケンス」と呼びます。 ドットは文字列をつなげるために使います。 ``` echo 'test'.'abc'; // testabc と出力される $index = 1; echo 'test'.$index; // test1 と出力される ``` エスケープシーケンスとドットを踏まえて提示されたコードを見ると、意味が分かると思います。 (`)`は不要だと思いますが) ``` echo ''. $i. ''. ' '; ``` &でつなげるなら↓のような感じでしょうか。 ``` echo 'getNumber() .'\'>'. $i. ''; ``` `\'`の代わりに`"`を使用すればもう少しシンプルになります。 `'`と`"`は区別され、`'`内で`"`はエスケープ不要だからです。 というか、HTMLの属性は通常は`"`で囲みますのでこちらの方が使うことが多いです。 ``` echo 'test"1"test'; // test"1"test と出力される = 「"」はエスケープ不要 getNumber() .'">'. $i. '';?> ``` どちらも基礎部分ですので、まずは↓のようなサイトでPHPの基本構文を学習された方がいいかと思います。 お節介でしたらすみません。 ドットインストール : PHP入門 Progate : PHP **追記** PHP公式のドキュメントにPHPマニュアルがありますのでこちらも参考にしてください。 このマニュアルには主に関数リファレンスと言語リファレンスがあり、正確な情報はこちらに載っています。 調べ物をする際にはまずこちらを当たると良いでしょう。 今回のドットは言語リファレンス内の文字列演算子に、エスケープシーケンスは同じく言語リファレンス内の文字列に記載があります。 文法部分の学習が終われば機能や付録も読んでいくことになると思いますので、どのようなことが記載されているかぐらいは見ておいた方が良いでしょう。 (フレームワークを使用するとあまり意識しない部分かもしれませんが必須知識です)