diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-07 23:06:23 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-07 23:06:23 +0900 |
| commit | 9d5ec5e3bc01c6174dea048e118edee579c36565 (patch) | |
| tree | 8bdb98836728e14f61bad56043f67bb352590963 /services/nuldoc/public/blog/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html | |
| parent | 479747454273abdbe9b5cc3f5c3dd18bbda7741a (diff) | |
| download | nsfisis.dev-9d5ec5e3bc01c6174dea048e118edee579c36565.tar.gz nsfisis.dev-9d5ec5e3bc01c6174dea048e118edee579c36565.tar.zst nsfisis.dev-9d5ec5e3bc01c6174dea048e118edee579c36565.zip | |
fix(style): fix codeblock style for rouge
Diffstat (limited to 'services/nuldoc/public/blog/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html')
| -rw-r--r-- | services/nuldoc/public/blog/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html | 105 |
1 files changed, 48 insertions, 57 deletions
diff --git a/services/nuldoc/public/blog/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html b/services/nuldoc/public/blog/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html index 62a903dd..e57d15ce 100644 --- a/services/nuldoc/public/blog/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html +++ b/services/nuldoc/public/blog/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html @@ -15,7 +15,7 @@ <meta name="Hatena::Bookmark" content="nocomment"> <link rel="icon" type="image/svg+xml" href="/favicon.svg"> <title>PHPerKaigi 2023: ボツになったトークン問題 その 1|REPL: Rest-Eat-Program Loop</title> - <link rel="stylesheet" href="/style.css?h=81dfc0b483beda175e3e17562faac7c9"> + <link rel="stylesheet" href="/style.css?h=c3724e2d900f13528c82005e79a8ec23"> </head> <body class="single"> <header class="header"> @@ -102,28 +102,27 @@ 注意: これはボツ問なので、得られたトークンを PHPerKaigi で入力してもポイントにはならない。 </p> <div class="codeblock"> - <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #6e7781"><?php</span> - -<span style="color: #0550ae">$π</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$argv</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">1</span><span style="color: #24292f;background-color: #f6f8fa">]</span> <span style="color: #0550ae">??</span> <span style="color: #0550ae">null</span><span style="color: #24292f;background-color: #f6f8fa">;</span> -<span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">null</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> - <span style="color: #cf222e">exit</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'No input.'</span><span style="color: #24292f;background-color: #f6f8fa">);</span> -<span style="color: #24292f;background-color: #f6f8fa">}</span> -<span style="color: #0550ae">$π</span> <span style="color: #0550ae">=</span> <span style="color: #953800">trim</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">);</span> -<span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">!</span><span style="color: #953800">is_numeric</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">))</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> - <span style="color: #cf222e">exit</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'Invalid input.'</span><span style="color: #24292f;background-color: #f6f8fa">);</span> -<span style="color: #24292f;background-color: #f6f8fa">}</span> - -<span style="color: #0550ae">$s</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">array_map</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">chr</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">...</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">2</span><span style="color: #24292f;background-color: #f6f8fa">)));</span> - -<span style="color: #953800">preg_match</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'/(\x23.+?) /'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$s</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">);</span> -<span style="color: #0550ae">$t</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">1</span><span style="color: #24292f;background-color: #f6f8fa">]</span> <span style="color: #0550ae">??</span> <span style="color: #0a3069">''</span><span style="color: #24292f;background-color: #f6f8fa">;</span> - -<span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">md5</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$t</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">===</span> <span style="color: #0a3069">'056e831a4146bf123e8ea16613303d2e'</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> - <span style="color: #cf222e">echo</span> <span style="color: #0a3069">"Token: </span><span style="color: #24292f">{</span><span style="color: #0550ae">$t</span><span style="color: #24292f">}</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span> -<span style="color: #24292f;background-color: #f6f8fa">}</span> <span style="color: #cf222e">else</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> - <span style="color: #cf222e">echo</span> <span style="color: #0a3069">"Failed.</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span> -<span style="color: #24292f;background-color: #f6f8fa">}</span> -</code></pre> + <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #6e7781"><?php</span> +</div><div class="codeblock-line"> +</div><div class="codeblock-line"><span style="color: #0550ae">$π</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$argv</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">1</span><span style="color: #24292f;background-color: #f6f8fa">]</span> <span style="color: #0550ae">??</span> <span style="color: #0550ae">null</span><span style="color: #24292f;background-color: #f6f8fa">;</span> +</div><div class="codeblock-line"><span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">null</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> +</div><div class="codeblock-line"> <span style="color: #cf222e">exit</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'No input.'</span><span style="color: #24292f;background-color: #f6f8fa">);</span> +</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">}</span> +</div><div class="codeblock-line"><span style="color: #0550ae">$π</span> <span style="color: #0550ae">=</span> <span style="color: #953800">trim</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">);</span> +</div><div class="codeblock-line"><span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">!</span><span style="color: #953800">is_numeric</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">))</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> +</div><div class="codeblock-line"> <span style="color: #cf222e">exit</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'Invalid input.'</span><span style="color: #24292f;background-color: #f6f8fa">);</span> +</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">}</span> +</div><div class="codeblock-line"> +</div><div class="codeblock-line"><span style="color: #0550ae">$s</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">array_map</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">chr</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">...</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">2</span><span style="color: #24292f;background-color: #f6f8fa">)));</span> +</div><div class="codeblock-line"> +</div><div class="codeblock-line"><span style="color: #953800">preg_match</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'/(\x23.+?) /'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$s</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">);</span> +</div><div class="codeblock-line"><span style="color: #0550ae">$t</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">1</span><span style="color: #24292f;background-color: #f6f8fa">]</span> <span style="color: #0550ae">??</span> <span style="color: #0a3069">''</span><span style="color: #24292f;background-color: #f6f8fa">;</span> +</div><div class="codeblock-line"> +</div><div class="codeblock-line"><span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">md5</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$t</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">===</span> <span style="color: #0a3069">'056e831a4146bf123e8ea16613303d2e'</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> +</div><div class="codeblock-line"> <span style="color: #cf222e">echo</span> <span style="color: #0a3069">"Token: </span><span style="color: #24292f">{</span><span style="color: #0550ae">$t</span><span style="color: #24292f">}</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span> +</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">}</span> <span style="color: #cf222e">else</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> +</div><div class="codeblock-line"> <span style="color: #cf222e">echo</span> <span style="color: #0a3069">"Failed.</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span> +</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">}</span></div></code></pre> </div> </section> <section id="section--how-to-obtain-token"> @@ -132,17 +131,15 @@ ソースを見るとわかるとおり、<code>$argv[1]</code> を参照している。それを <code>$π</code> なる変数に代入しているので、円周率を渡してみる。 </p> <div class="codeblock"> - <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #24292f;background-color: #f6f8fa">$</span><span style="color: #24292f;background-color: #f6f8fa"> </span>php Q.php 3.14 -<span style="color: #24292f;background-color: #f6f8fa">Failed.</span> -</code></pre> + <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">$</span><span style="color: #24292f;background-color: #f6f8fa"> </span>php Q.php 3.14 +</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">Failed.</span></div></code></pre> </div> <p> 失敗してしまった。精度を上げてみる。 </p> <div class="codeblock"> - <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #24292f;background-color: #f6f8fa">$</span><span style="color: #24292f;background-color: #f6f8fa"> </span>php Q.php 3.1415 -<span style="color: #24292f;background-color: #f6f8fa">Failed.</span> -</code></pre> + <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">$</span><span style="color: #24292f;background-color: #f6f8fa"> </span>php Q.php 3.1415 +</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">Failed.</span></div></code></pre> </div> <p> だめだった。これを成功するまで繰り返す。 @@ -151,9 +148,8 @@ 最初にトークンが得られるのは、小数点以下 16 桁目まで入力したときで、こうなる。 </p> <div class="codeblock"> - <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #24292f;background-color: #f6f8fa">$</span><span style="color: #24292f;background-color: #f6f8fa"> </span>php Q.php 3.1415926535897932 -<span style="color: #24292f;background-color: #f6f8fa">Token: #</span>YO -</code></pre> + <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">$</span><span style="color: #24292f;background-color: #f6f8fa"> </span>php Q.php 3.1415926535897932 +</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">Token: #</span>YO</div></code></pre> </div> <p> めでたくトークン「<code>#YO</code>」が手に入った。 @@ -165,22 +161,20 @@ 短いので頭から追っていく。 </p> <div class="codeblock"> - <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #0550ae">$π</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$argv</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">1</span><span style="color: #24292f;background-color: #f6f8fa">]</span> <span style="color: #0550ae">??</span> <span style="color: #0550ae">null</span><span style="color: #24292f;background-color: #f6f8fa">;</span> -<span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">null</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> - <span style="color: #cf222e">exit</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'No input.'</span><span style="color: #24292f;background-color: #f6f8fa">);</span> -<span style="color: #24292f;background-color: #f6f8fa">}</span> -<span style="color: #0550ae">$π</span> <span style="color: #0550ae">=</span> <span style="color: #953800">trim</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">);</span> -<span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">!</span><span style="color: #953800">is_numeric</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">))</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> - <span style="color: #cf222e">exit</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'Invalid input.'</span><span style="color: #24292f;background-color: #f6f8fa">);</span> -<span style="color: #24292f;background-color: #f6f8fa">}</span> -</code></pre> + <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #0550ae">$π</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$argv</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">1</span><span style="color: #24292f;background-color: #f6f8fa">]</span> <span style="color: #0550ae">??</span> <span style="color: #0550ae">null</span><span style="color: #24292f;background-color: #f6f8fa">;</span> +</div><div class="codeblock-line"><span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">null</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> +</div><div class="codeblock-line"> <span style="color: #cf222e">exit</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'No input.'</span><span style="color: #24292f;background-color: #f6f8fa">);</span> +</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">}</span> +</div><div class="codeblock-line"><span style="color: #0550ae">$π</span> <span style="color: #0550ae">=</span> <span style="color: #953800">trim</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">);</span> +</div><div class="codeblock-line"><span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">!</span><span style="color: #953800">is_numeric</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">))</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> +</div><div class="codeblock-line"> <span style="color: #cf222e">exit</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'Invalid input.'</span><span style="color: #24292f;background-color: #f6f8fa">);</span> +</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">}</span></div></code></pre> </div> <p> 入力のバリデーション部分。数値のみ受け付ける。 </p> <div class="codeblock"> - <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #0550ae">$s</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">array_map</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">chr</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">...</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">2</span><span style="color: #24292f;background-color: #f6f8fa">)));</span> -</code></pre> + <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #0550ae">$s</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">array_map</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">chr</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">...</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">2</span><span style="color: #24292f;background-color: #f6f8fa">)));</span></div></code></pre> </div> <p> <code>$π</code> を 2 文字ごとに区切り (<code>str_split</code>)、数値を ASCII コードと見做して文字に変換 (<code>chr</code>) して結合 (<code>implode</code>) している。 @@ -189,16 +183,14 @@ 例えば、<code>$π</code> が <code>'656667'</code> だったとすると、<code>65</code>、<code>66</code>、<code>67</code> に対応した <code>'A'</code>、<code>'B'</code>、<code>'C'</code> へと変換され、<code>'ABC'</code> になる。 </p> <div class="codeblock"> - <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #0550ae">$π</span> <span style="color: #0550ae">=</span> <span style="color: #0a3069">'656667'</span><span style="color: #24292f;background-color: #f6f8fa">;</span> -<span style="color: #0550ae">$s</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">array_map</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">chr</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">...</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">2</span><span style="color: #24292f;background-color: #f6f8fa">)));</span> -<span style="color: #cf222e">echo</span> <span style="color: #0550ae">$s</span><span style="color: #24292f;background-color: #f6f8fa">;</span> -<span style="color: #6e7781">// => ABC</span> -</code></pre> + <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #0550ae">$π</span> <span style="color: #0550ae">=</span> <span style="color: #0a3069">'656667'</span><span style="color: #24292f;background-color: #f6f8fa">;</span> +</div><div class="codeblock-line"><span style="color: #0550ae">$s</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">array_map</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">chr</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">...</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$π</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">2</span><span style="color: #24292f;background-color: #f6f8fa">)));</span> +</div><div class="codeblock-line"><span style="color: #cf222e">echo</span> <span style="color: #0550ae">$s</span><span style="color: #24292f;background-color: #f6f8fa">;</span> +</div><div class="codeblock-line"><span style="color: #6e7781">// => ABC</span></div></code></pre> </div> <div class="codeblock"> - <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #953800">preg_match</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'/(\x23.+?) /'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$s</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">);</span> -<span style="color: #0550ae">$t</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">1</span><span style="color: #24292f;background-color: #f6f8fa">]</span> <span style="color: #0550ae">??</span> <span style="color: #0a3069">''</span><span style="color: #24292f;background-color: #f6f8fa">;</span> -</code></pre> + <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #953800">preg_match</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'/(\x23.+?) /'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$s</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">);</span> +</div><div class="codeblock-line"><span style="color: #0550ae">$t</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">1</span><span style="color: #24292f;background-color: #f6f8fa">]</span> <span style="color: #0550ae">??</span> <span style="color: #0a3069">''</span><span style="color: #24292f;background-color: #f6f8fa">;</span></div></code></pre> </div> <p> 正規表現でマッチングしている。<code>\x23</code> は <code>#</code> と同じであることに留意すると、この正規表現は「<code>#</code> から始まる 2 以上の長さ (含 <code>#</code>) の文字列で、最初に現れるスペースまで」にマッチする。つまりこれは、PHPerKaigi におけるトークンである。 @@ -207,12 +199,11 @@ なお、<code>#</code> を直接書いていないのは、<code>/#.+?) /</code> と書くと、<code>#.+?)</code> という意図せぬトークンが登録されてしまうからである。 </p> <div class="codeblock"> - <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">md5</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$t</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">===</span> <span style="color: #0a3069">'056e831a4146bf123e8ea16613303d2e'</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> - <span style="color: #cf222e">echo</span> <span style="color: #0a3069">"Token: </span><span style="color: #24292f">{</span><span style="color: #0550ae">$t</span><span style="color: #24292f">}</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span> -<span style="color: #24292f;background-color: #f6f8fa">}</span> <span style="color: #cf222e">else</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> - <span style="color: #cf222e">echo</span> <span style="color: #0a3069">"Failed.</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span> -<span style="color: #24292f;background-color: #f6f8fa">}</span> -</code></pre> + <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">md5</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$t</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">===</span> <span style="color: #0a3069">'056e831a4146bf123e8ea16613303d2e'</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> +</div><div class="codeblock-line"> <span style="color: #cf222e">echo</span> <span style="color: #0a3069">"Token: </span><span style="color: #24292f">{</span><span style="color: #0550ae">$t</span><span style="color: #24292f">}</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span> +</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">}</span> <span style="color: #cf222e">else</span> <span style="color: #24292f;background-color: #f6f8fa">{</span> +</div><div class="codeblock-line"> <span style="color: #cf222e">echo</span> <span style="color: #0a3069">"Failed.</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span> +</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">}</span></div></code></pre> </div> <p> 最後にトークンのハッシュ値を見て、想定解かどうかを確認する。 |
