From de13d68cddef5bb321469bcffb868f27ddd5390e Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 12 Mar 2023 15:12:10 +0900 Subject: style: add .highlight class to pre tag --- .../index.html | 34 +++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'public/posts/2022-09-29') diff --git a/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html b/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html index b121725..abdb48e 100644 --- a/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html +++ b/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html @@ -125,7 +125,7 @@ 特に、C言語でこのような試みをおこなったことがあるかたならそう思うだろう。事実、Cでのこの制約はほとんど無意味に等しい。

-
+            
               #\
   i\
   n\
@@ -260,7 +260,7 @@
               また、2文字だと文字列がまともに書けないのも辛い。''だけで 2文字使うので、「1文字の文字列リテラル」というものを書くことができない。PHP では文字列リテラル中に生の改行が書けるので
             

-
+            
               $a
 ='
 a'
@@ -284,7 +284,7 @@ a'
                 まずは普通に書くとしよう。
               

-
+              
                 <?php
 
     for ($i = 1; $i < 100; $i++) {
@@ -303,7 +303,7 @@ a'
                 forは、3文字もある長いキーワードである。こんなものは使えない。array_系の関数を使って、適当に置き換えるとしよう。
               

-
+              
                 <?php
 
   $s = range(1, 100);
@@ -325,7 +325,7 @@ a'
                 rangearray_walkprintfは長すぎるのでどうにかせねばならない。ここで、PHP の可変関数を使う。可変関数とは、関数名が文字列として入った変数を経由して、関数を呼び出す機能である。
               

-
+              
                 <?php
 
   $r = 'range';
@@ -365,7 +365,7 @@ a'
                 というルールがない場合、「未定義の定数が評価された場合、その定数の名前が値になる」という PHP 7.x までの仕様が利用できる。例えば、Fizzという文字列が欲しければ、次のようにする。
               

-
+              
                 $f
 =F
 .i
@@ -378,7 +378,7 @@ a'
                 こうして簡単に文字列を作れる。なお、この仕様は 7.x 時点でも警告を受けるので、@演算子を使って抑制してやるとよい。
               

-
+              
                 $f
 =@
 F.
@@ -405,7 +405,7 @@ F.
                 ずばり、文字列同士のビット演算を使う。PHP では、文字列同士でビット演算 (&|^) をした場合、文字列の各バイトごとに指定したビット演算がなされ、それを結合したものが演算結果となる。
               

-
+              
                 $a = "12345";
 $b = "world";
 
@@ -423,7 +423,7 @@ echo $result;
                 これを踏まえ、次のコードを見てみよう。
               

-
+              
                 $x = "x\nOm\n";
 $y = "\nk!\no";
 $r = $x ^ $y;
@@ -434,7 +434,7 @@ echo "$r\n";
                 実行すると、rangeが表示される。さて、PHP では文字列リテラル中に生の改行を直接書いてもよいのだった (「主な障害」の節を参照のこと)。書きかえてみよう。
               

-
+              
                 $x
 ='x
 Om
@@ -453,7 +453,7 @@ echo "$r\n";
                 さらに#を使って適当に調整すると、次のようになる。
               

-
+              
                 $x
 =#
 'x
@@ -490,7 +490,7 @@ echo "$r\n";
               完成したものがこちら。
             

-
+            
               <?php
 
   $x
@@ -660,7 +660,7 @@ echo "$r\n";
               PHP では、バッククォートを使ってシェルを呼び出せる。これはshell_exec関数と等価である。さて、PHP ではバックスラッシュによる行継続が使えないと書いたが、シェルでは使える (当然だが、呼び出されるシェルに依存する。Bash なら大丈夫だろう。知らんけど)。
             

-
+            
               <?php
 
   printf(`
@@ -701,7 +701,7 @@ echo "$r\n";
               もうこれ以上は不可能だと思っていたのだが、この記事の執筆中に解決する方法を思いついたので載せておく。
             

-
+            
               <?php
 
 $c = 'chr';
@@ -737,7 +737,7 @@ ${
               先程と同じく、chrprintfを生成する部分は長くなるので省いた。
             

-
+            
               ${
 '_
 '}
@@ -747,7 +747,7 @@ ${
               は変数で、中にはスペースとエスケープが入っている (chr(32) . chr(92))。シェルに渡されている文字列は次のようになる。
             

-
+            
               e\
 c\
 h\
@@ -770,7 +770,7 @@ o\
               ちなみに、PHP 8.2 からは、この記法で Warning が出るようになるようだ。
             

-
+            
               ${
 '_
 '}
-- 
cgit v1.2.3-70-g09d2