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

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

新規登録して質問してみよう
ただいま回答率
85.35%
UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

PHP

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

0回答

1517閲覧

PHPの文字列リテラルの事、教えてくんねぇか?

退会済みユーザー

退会済みユーザー

総合スコア0

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

PHP

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

5クリップ

投稿2020/11/14 19:18

おす! 久しぶりだなぁ。みんな元気にしてっか?

あのよぅ、ちょっと聞きてぇ事ができたんだ。

PHP の事なんだけんどもよぅ、

\x41 も \u{41} も使わねぇで A の文字列リテラルの定義って、出来ると思うか?

勿論、ソースコードのエンコードは UTF-8 なんだけんどもな、

なんかいい方法知らねぇか?

コードゴルフみてぇな話だから、気楽になんでも言ってくれよ。

おら、わっくわくしながら回答待ってっからさぁ、頼むよ。

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

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

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

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

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

takasima20

2020/11/14 21:09 編集

hex2bin とか pack はあり?
退会済みユーザー

退会済みユーザー

2020/11/14 22:18

おす! 聞いてくれてありがとな。 縛りに関してはとりあえず、"A"はダメだ、ってのと、 定義をするにあたって直接関数を通すのもダメだ、って縛りだけのはずだ。
退会済みユーザー

退会済みユーザー

2020/11/14 22:20

だけんども、リテラルの中に関数を記述する事で、 ある時点において、その関数が実行されて結果的に A が定義できる方法があるってんなら、 それは、場合によってはありかもしれねぇんだ。
退会済みユーザー

退会済みユーザー

2020/11/14 22:26 編集

だから、心あたりがあったらなんでも言ってくれよ。
退会済みユーザー

退会済みユーザー

2020/11/14 22:23

あと、この質問に関しては、 回答そのものでなくても回答欄の方に書いてもらった方がいいかもしんねぇな。 あっちはスレッドになるし、Markdownが使えっから、あっちの方がいろいろと便利かもしんねぇ。
退会済みユーザー

退会済みユーザー

2020/11/14 22:24

わりぃけど、頼むよ。
thyda.eiqau

2020/11/15 03:28

「直接関数を通すのもダメ」っていうのは、sprintf('%c', 65); はダメっていう意味?
YT0014

2020/11/15 04:18

8進数(\101)はアリ?
退会済みユーザー

退会済みユーザー

2020/11/15 07:27

>「直接関数を通すのもダメ」っていうのは、sprintf('%c', 65); はダメっていう意味? そうそう。あくまでもリテラルとして定義しなきゃなんねぇから、 $val = sprintf('%c', 65); みてぇのは、ナシってルールらしいんだ。 だけんども、例えば $val = "sprintf('%c', 65)"; みてぇにしておいて、後でそれが構文解析されて結果的に A っつー string になるのは、場合によってはでぇじょうぶらしいんだ。
退会済みユーザー

退会済みユーザー

2020/11/15 07:31

>8進数(\101)はアリ? それなんだけんどもさぁ、ルールを守ってっか調べてるらしくてよう、 リテラル定義直後に、変数内に 0x41 が存在しねぇか、バイナリレベルで調べてんだよ。 んだから、その後で 0x41 になるのは構わねぇけど、 リテラル定義の時点でインタプリタが 0x41 として解釈しちまうのは、ダメって事らしいんだ。
退会済みユーザー

退会済みユーザー

2020/11/15 07:32

だから \x41 も \u{41} ダメ、みてぇな、 すっげぇめんどくせぇ事になってんだ。 後出ししたみてぇですまねぇな。
退会済みユーザー

退会済みユーザー

2020/11/15 07:38

んだから、勿論、 $val = "\\x41"; みてぇにしておいて、後でそれが 0x41 として解釈されるっていうのなら、場合によってはでぇじょうぶらしいんだ。
退会済みユーザー

退会済みユーザー

2020/11/15 07:39

そんで、『場合によっては』の場合っつーのは、一番でぇじょうぶそうな処理でいうと、 . を使った単純な string 連結とかだったりするらしいんだ。
退会済みユーザー

退会済みユーザー

2020/11/15 07:42

そんだから、eval() みてぇに危険な関数を通すのは、当然、ナシって事らしいぞ。
kyoya0819

2020/11/15 23:44 編集

おす!久しぶりだなぁ! 1, \x41 or \u{41}以外の文字列リテラルで、Aを定義 2, \x41 or \u{41}でないことを確認 3, Aと出力 ということでええんか?
退会済みユーザー

退会済みユーザー

2020/11/16 10:39

だいてぇそんな解釈でいいけどよぅ、 『2, \x41 or \u{41}でないことを確認』 については、 定義された string 中に 0x41 が存在しねぇ事を確認してるみてぇだ。
kyoya0819

2020/11/16 10:41

> リテラル定義直後に、変数内に 0x41 が存在しねぇか、バイナリレベルで調べてんだよ。 これが抜けてたか
takasima20

2020/11/16 12:33

キャストでいけるかと思って試したら、そのまま文字列になりやがる…
退会済みユーザー

退会済みユーザー

2020/11/16 15:35

な、最初に思ってたよりは、割と難易度高ぇだろ? 無理かもしんねぇけど、本当にできるってぇなら、 色々と、わっくわくしてこねぇか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問