{"id":1075,"date":"2025-06-12T12:08:28","date_gmt":"2025-06-12T04:08:28","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1075.html"},"modified":"2025-06-12T12:08:28","modified_gmt":"2025-06-12T04:08:28","slug":"symfony%ef%bc%9a%e5%a6%82%e4%bd%95%e5%9c%a8twig%e6%a8%a1%e6%9d%bf%e4%b8%ad%e8%bd%ac%e4%b9%89%e8%be%93%e5%87%ba%ef%bc%88%e5%90%ab%e7%a4%ba%e4%be%8b%ef%bc%89","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1075.html","title":{"rendered":"Symfony\uff1a\u5982\u4f55\u5728Twig\u6a21\u677f\u4e2d\u8f6c\u4e49\u8f93\u51fa\uff08\u542b\u793a\u4f8b\uff09"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312;Symfony&#26694;&#26550;&#20013;&#65292;&#22914;&#26524;&#20320;&#24819;&#22312; Twig &#27169;&#26495;&#20013;&#36827;&#34892;&#36716;&#20041;&#36755;&#20986;&#65292;&#21487;&#20197;&#20351;&#29992; <code>|raw<\/code> &#25110;&#32773; <code>|e<\/code> &#36807;&#28388;&#22120;&#12290;&#20197;&#19979;&#26159;&#36825;&#20004;&#31181;&#26041;&#27861;&#30340;&#35814;&#32454;&#35299;&#37322;&#21644;&#31034;&#20363;&#65306;<\/p>\n<h3>&#20351;&#29992; <code>|raw<\/code> &#36807;&#28388;&#22120;<\/h3>\n<p><code>|raw<\/code> &#36807;&#28388;&#22120;&#20250;&#30452;&#25509;&#36755;&#20986;&#23383;&#31526;&#20018;&#32780;&#19981;&#23545;&#20854;&#36827;&#34892;&#20219;&#20309;&#36716;&#20041;&#22788;&#29702;&#12290;&#36825;&#23545;&#20110;&#38656;&#35201;&#26174;&#31034; HTML &#20869;&#23481;&#26102;&#38750;&#24120;&#26377;&#29992;&#12290;<\/p>\n<pre><code class=\"language-twig\">{{ \"&#36825;&#26159;&#19968;&#20010;&#24102;&#26377;HTML&#26631;&#31614;&#30340;&#23383;&#31526;&#20018;\"|raw }}<\/code><\/pre>\n<h3>&#20351;&#29992; <code>|e<\/code> &#36807;&#28388;&#22120;<\/h3>\n<p><code>|e<\/code> &#36807;&#28388;&#22120;&#20250;&#23545;&#23383;&#31526;&#20018;&#36827;&#34892;&#36716;&#20041;&#65292;&#21253;&#25324; HTML &#26631;&#31614;&#12289;&#33050;&#26412;&#21644;&#29305;&#27530;&#23383;&#31526;&#31561;&#12290;&#36825;&#36890;&#24120;&#29992;&#20110;&#23433;&#20840;&#22320;&#26174;&#31034;&#29992;&#25143;&#36755;&#20837;&#25110;&#20854;&#20182;&#21487;&#33021;&#21253;&#21547;&#24694;&#24847;&#20195;&#30721;&#30340;&#25968;&#25454;&#12290;<\/p>\n<pre><code class=\"language-twig\">{{ \"&#36825;&#26159;&#19968;&#20010;&#24102;&#26377;HTML&#26631;&#31614;&#30340;&#23383;&#31526;&#20018;\"|e }}<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026; <code>article.html.twig<\/code> &#30340;&#27169;&#26495;&#65292;&#24182;&#19988;&#25105;&#20204;&#38656;&#35201;&#22312;&#20854;&#20013;&#26174;&#31034;&#29992;&#25143;&#36755;&#20837;&#30340;&#20869;&#23481;&#65306;<\/p>\n<pre><code class=\"language-twig\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;title&gt;Article&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;{{ article.title }}&lt;\/h1&gt;\n    &lt;div&gt;{{ article.content|e }}&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65306;<\/p>\n<ul>\n<li><code>article.title<\/code> &#26159;&#20174;&#25511;&#21046;&#22120;&#20256;&#36882;&#36807;&#26469;&#30340;&#26631;&#39064;&#12290;<\/li>\n<li><code>article.content<\/code> &#26159;&#29992;&#25143;&#36755;&#20837;&#30340;&#20869;&#23481;&#12290;<\/li>\n<\/ul>\n<p>&#36890;&#36807;&#20351;&#29992; <code>|e<\/code> &#36807;&#28388;&#22120;&#65292;&#25105;&#20204;&#30830;&#20445;&#20102;&#20869;&#23481;&#19981;&#20250;&#34987;&#36716;&#25442;&#20026; HTML &#26631;&#31614;&#25110;&#20854;&#20182;&#19981;&#24076;&#26395;&#20986;&#29616;&#30340;&#24773;&#20917;&#65292;&#20174;&#32780;&#25552;&#39640;&#20102;&#23433;&#20840;&#24615;&#12290;<\/p>\n<h3>&#24635;&#32467;<\/h3>\n<p>&#22312; Symfony &#20013;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; <code>|raw<\/code> &#21644; <code>|e<\/code> &#36807;&#28388;&#22120;&#26469;&#25511;&#21046;&#23383;&#31526;&#20018;&#30340;&#36716;&#20041;&#34892;&#20026;&#12290;<code>|raw<\/code> &#36866;&#29992;&#20110;&#19981;&#38656;&#35201;&#36716;&#20041;&#30340;&#22330;&#26223;&#65292;&#32780; <code>|e<\/code> &#21017;&#26159;&#26356;&#23433;&#20840;&#30340;&#36873;&#25321;&#65292;&#36866;&#29992;&#20110;&#38656;&#35201;&#26174;&#31034;&#29992;&#25143;&#36755;&#20837;&#25110;&#20854;&#20182;&#21487;&#33021;&#21253;&#21547;&#24694;&#24847;&#20195;&#30721;&#30340;&#25968;&#25454;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#20171;&#32461;<\/h2><p>&#22312;&#20351;&#29992;Symfony&#21644;Twig&#26102;&#65292;&#36755;&#20986;&#36716;&#20041;&#26159;&#19968;&#39033;&#37325;&#35201;&#30340;&#23433;&#20840;&#24615;&#23454;&#36341;&#65292;&#23427;&#26377;&#21161;&#20110;&#38450;&#27490;XSS&#65288;&#36328;&#31449;&#33050;&#26412;&#25915;&#20987;&#65289;&#25915;&#20987;&#65292;&#36890;&#36807;&#30830;&#20445;&#28210;&#26579;&#21040;&#27169;&#26495;&#20013;&#30340;&#20219;&#20309;&#36755;&#20986;&#37117;&#26159;&#23433;&#20840;&#30340;&#12290;Twig&#25552;&#20379;&#20102;&#33258;&#21160;&#36716;&#20041;&#21151;&#33021;&#65292;&#20294;&#22312;&#26576;&#20123;&#24773;&#20917;&#19979;&#65292;&#20320;&#21487;&#33021;&#38656;&#35201;&#25163;&#21160;&#36716;&#20041;&#36755;&#20986;&#25110;&#35843;&#25972;&#40664;&#35748;&#34892;&#20026;&#12290;&#26412;&#25945;&#31243;&#23558;&#25506;&#35752;&#22914;&#20309;&#26377;&#25928;&#22320;&#22312;Twig&#27169;&#26495;&#20013;&#36716;&#20041;&#36755;&#20986;&#65292;&#20197;&#20379;&#21442;&#32771;&#12290;<\/p><h2>&#29702;&#35299;Twig&#30340;Escaping&#26426;&#21046;<\/h2><p>Twig&#22312;&#28210;&#26579;&#21464;&#37327;&#20043;&#21069;&#20250;&#33258;&#21160;&#36827;&#34892;&#36716;&#20041;&#65292;&#20197;&#38450;&#27490;&#24694;&#24847;&#20195;&#30721;&#25191;&#34892;&#12290;&#36716;&#20041;&#31574;&#30053;&#26159;&#22522;&#20110;&#19978;&#19979;&#25991;&#30340;&#65292;&#21363;Twig&#26681;&#25454;&#19978;&#19979;&#25991;&#65288;HTML&#12289;JavaScript&#12289;CSS&#31561;&#65289;&#36873;&#25321;&#21512;&#36866;&#30340;&#31574;&#30053;&#12290;&#40664;&#35748;&#24773;&#20917;&#19979;&#65292;&#19978;&#19979;&#25991;&#26159;HTML&#65292;&#20854;&#20013;Twig&#20250;&#36716;&#20041;&amp;&#12289;&#8221;&#12289;&lt;&#12289;&gt;&#21644;&#8217;&#36825;&#20123;&#23383;&#31526;&#12290;<\/p><p>&#36825;&#37324;&#26159;&#19968;&#20010;&#33258;&#21160;&#36716;&#20041;&#30340;&#20363;&#23376;&#65306;<\/p><pre><code>{{ user_input }}<\/code><\/pre><p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#22914;&#26524;<code>user_input<\/code>&#21253;&#21547;&#20219;&#20309;HTML&#26631;&#31614;&#25110;&#29305;&#27530;&#23383;&#31526;&#65292;&#23427;&#20204;&#23558;&#22312;&#28210;&#26579;&#26102;&#33258;&#21160;&#36716;&#20041;&#12290;<\/p><h2>&#25163;&#21160;&#35299;&#21253;&#21464;&#37327;<\/h2><p>&#26377;&#26102;&#65292;&#20320;&#38656;&#35201;&#25163;&#21160;&#36867;&#33073;&#21464;&#37327;&#12290;<code>|escape<\/code>&#25110;&#32773;<code>|e<\/code>&#36807;&#28388;&#22120;&#21487;&#20197;&#29992;&#20110;&#27492;&#30446;&#30340;&#65292;&#20801;&#35768;&#24744;&#26126;&#30830;&#25351;&#23450;&#36867;&#36920;&#31574;&#30053;&#12290;<\/p><pre><code>{{ user_input|escape('html') }}<\/code><\/pre><p>&#20363;&#22914;&#65292;&#23545;&#20110;&#26576;&#20123;&#19978;&#19979;&#25991;&#65292;&#20063;&#21487;&#20197;&#20351;&#29992;&#32553;&#20889;&#31526;&#21495;&#65306;<\/p><p><code>{{ user_input|e('url') }}<\/code>&#23545;&#20110;URL&#21442;&#25968;&#30340;&#36867;&#36920;&#12290;<\/p><p><code>{{ user_input|e('js') }}<\/code>&#29992;&#20110;JavaScript&#20869;&#23481;&#30340;&#36867;&#36920;&#12290;<\/p><p><code>{{ user_input|e('html') }}<\/code>&#29992;&#20110;HTML&#20869;&#23481;&#30340;&#36716;&#20041;&#12290;<\/p><p>&#35831;&#27880;&#24847;&#65292;&#22914;&#26524;&#20351;&#29992;&#20102;<code>|e<\/code>&#21734;&#12290;<code>|escape<\/code>&#22312;&#19981;&#21516;&#30340;&#19978;&#19979;&#25991;&#20013;&#20351;&#29992;&#24102;&#26377;&#21464;&#37327;&#26102;&#65292;&#20250;&#35206;&#30422;Twig&#40664;&#35748;&#30340;&#33258;&#21160;&#36716;&#20041;&#12290;<\/p><h2>&#31105;&#29992;&#36716;&#20041;<\/h2><p>&#23613;&#31649;&#19981;&#25512;&#33616;&#65292;&#20294;&#22312;&#26576;&#20123;&#24773;&#20917;&#19979;&#65292;&#21487;&#33021;&#38656;&#35201;&#23436;&#20840;&#31105;&#29992;&#36716;&#20041;&#12290;&#20320;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#26041;&#24335;&#23454;&#29616;&#65306;\n# &#31034;&#20363;&#20195;&#30721;&#65288;Python&#65289;\nimport re\n\ndef escape_string(s):\n return re.escape(s)\n\ns = &#8220;Hello, World!&#8221;\nprint(escape_string(s)) # &#36755;&#20986;: Hello, HelloWorld!n\n&#22312;&#19978;&#36848;&#31034;&#20363;&#20013;&#65292;re.escape()&#20989;&#25968;&#29992;&#20110;&#23545;&#23383;&#31526;&#20018;&#36827;&#34892;&#36716;&#20041;&#65292;&#20197;&#30830;&#20445;&#22312;&#22788;&#29702;&#21253;&#21547;&#29305;&#27530;&#23383;&#31526;&#30340;&#23383;&#31526;&#20018;&#26102;&#19981;&#20250;&#24847;&#22806;&#22320;&#34987;&#35299;&#26512;&#20026;HTML&#25110;JavaScript&#20013;&#30340;&#26631;&#31614;&#12290;\n&#35831;&#27880;&#24847;&#65292;&#22312;&#23454;&#38469;&#24212;&#29992;&#20013;&#65292;&#36825;&#31181;&#20570;&#27861;&#21487;&#33021;&#20250;&#23548;&#33268;&#23433;&#20840;&#38382;&#39064;&#65292;&#22240;&#20026;&#36825;&#20250;&#20801;&#35768;&#29992;&#25143;&#36755;&#20837;&#20219;&#20309;&#21512;&#27861;&#30340;&#25991;&#26412;&#65292;&#32780;&#19981;&#21463;&#38480;&#21046;&#12290;&#22240;&#27492;&#65292;&#24378;&#28872;&#24314;&#35758;&#35880;&#24910;&#20351;&#29992;&#27492;&#26041;&#27861;&#65292;&#24182;&#20165;&#22312;&#24517;&#35201;&#26102;&#32771;&#34385;&#20854;&#28508;&#22312;&#39118;&#38505;&#12290;<code>raw<\/code>&#36807;&#28388;&#22120;&#65306;<\/p><pre><code>{{ user_input|raw }}<\/code><\/pre><p>&#35831;&#35880;&#24910;&#20351;&#29992;&#27492;&#36807;&#28388;&#22120;&#65292;&#22240;&#20026;&#36825;&#21487;&#33021;&#24341;&#21457;XSS&#25915;&#20987;&#30340;&#21487;&#33021;&#24615;&#12290;<\/p><h2>&#22312;&#19981;&#21516;&#19978;&#19979;&#25991;&#20013;&#20351;&#29992;&#36716;&#20041;&#25805;&#20316;&#31526;&#12290;<\/h2><p>&#24120;&#35265;&#22330;&#26223;&#65306;<\/p><p>&#22312;URL&#21442;&#25968;&#20013;&#65292;&#24403;&#21464;&#37327;&#20316;&#20026;&#21442;&#25968;&#26102;&#65292;&#38656;&#35201;&#36827;&#34892;&#36716;&#20041;&#20197;&#38450;&#27490;URL&#30340;&#31713;&#25913;&#12290;<\/p><p>JavaScript&#19978;&#19979;&#25991;&#65306;&#24403;&#30452;&#25509;&#22312;JavaScript&#20013;&#25554;&#20837;&#21464;&#37327;&#26102;&#38750;&#24120;&#26377;&#29992;&#12290;&#27491;&#30830;&#22320;&#36716;&#20041;&#33267;&#20851;&#37325;&#35201;&#65292;&#20197;&#38450;&#27490;&#33050;&#26412;&#27880;&#20837;&#12290;<\/p><p>HTML&#19978;&#19979;&#25991;&#65306;&#26368;&#24120;&#35265;&#30340;&#21644;&#40664;&#35748;&#30340;&#19978;&#19979;&#25991;&#12290;&#25152;&#26377;&#21464;&#37327;&#37117;&#29992;HTML&#23454;&#20307;&#36827;&#34892;&#36716;&#20041;&#65292;&#20197;&#38450;&#27490;&#26631;&#31614;&#25110;&#23646;&#24615;&#34987;&#35299;&#37322;&#12290;<\/p><p>&#31034;&#20363;JavaScript&#19978;&#19979;&#25991;&#65306;<\/p><pre><code>{% set data = \"Hello, &lt;script&gt;alert('I am malicious code!')&lt;\/script&gt; World!\" %}\n\n&lt;script&gt;\n  var jsData = {{ data | json_encode | raw }};\n  \/\/ Output will be: var jsData = \"Hello, &lt;script&gt;alert('I am malicious code!')&lt;\/script&gt; World!\";\n&lt;\/script&gt;<\/code><\/pre><p>URL&#19978;&#19979;&#25991;&#31034;&#20363;&#65306;<\/p><pre><code>{% set urlParam = \"User Input: &lt;a href='https:\/\/example.com'&gt;Click Me&lt;\/a&gt;\" %}\n\n&lt;a href=\"{{ urlParam | url_encode }}\"&gt;Click Here&lt;\/a&gt;<\/code><\/pre><h2>&#23450;&#21046;&#30340;&#33073;&#25935;&#31574;&#30053;<\/h2><p>&#38500;&#20102;&#39044;&#23450;&#20041;&#30340;&#31574;&#30053;&#20043;&#22806;&#65292;Twig &#36824;&#20801;&#35768;&#24744;&#20351;&#29992; custom_escape_strategy &#23450;&#20041;&#33258;&#23450;&#20041;&#33073;&#25935;&#31574;&#30053;&#12290;<code>escape<\/code>&#22312;&#20320;&#30340;Twig&#25193;&#23637;&#31867;&#20013;&#65306;<\/p><pre><code>use SymfonyComponentRoutingGeneratorUrlGeneratorInterface;\nuse SymfonyComponentSecurityCoreEncoderEncoderFactoryInterface;\nuse SymfonyComponentRoutingExceptionRouteNotFoundException;\nuse SymfonyComponentRoutingGeneratorUrlGeneratorInterface;\nuse SymfonyComponentRoutingRouterInterface;\nuse SymfonyComponentRoutingGeneratorUrlGeneratorInterface;\n\npublic function escapeHtmlMoreSafe(Environment $env, $string, $charset)\n{\n    \/\/ Use Symfony's built-in Twig extension for escaping\n    $escapedString = $env-&gt;getExtension('SymfonyBridgeTwigExtensionSecurityExtension')\n        -&gt;escapeHtml($string);\n\n    \/\/ Add custom escaping logic here if needed\n\n    return $escapedString;\n}<\/code><\/pre><p>&#22312;&#23450;&#20041;&#20102;&#33258;&#23450;&#20041;&#31574;&#30053;&#21518;&#65292;&#27880;&#20876;&#23427;&#65306;<\/p><pre><code>$twig = new Environment($loader);\n$twig-&gt;getExtension(EscaperExtension::class)-&gt;setEscaper('html_more_safe', 'escapeHtmlMoreSafe');<\/code><\/pre><p>&#29616;&#22312;&#20320;&#21487;&#20197;&#20351;&#29992;&#33258;&#23450;&#20041;&#31574;&#30053;&#65306;<\/p><pre><code>{{ user_input|e('html_more_safe') }}<\/code><\/pre><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;Twig&#27169;&#26495;&#20013;&#36867;&#36920;&#36755;&#20986;&#23545;&#20110;Web&#24212;&#29992;&#31243;&#24207;&#30340;&#23433;&#20840;&#33267;&#20851;&#37325;&#35201;&#12290;&#36890;&#36807;&#29702;&#35299;&#24182;&#21033;&#29992;Twig&#30340;&#36867;&#36920;&#20989;&#25968;&#65292;&#24320;&#21457;&#32773;&#21487;&#20197;&#26356;&#22909;&#22320;&#20445;&#25252;&#20182;&#20204;&#30340;&#24212;&#29992;&#20813;&#21463;XSS&#25915;&#20987;&#12290;&#24403;&#26377;&#30097;&#38382;&#26102;&#65292;&#35831;&#22987;&#32456;&#36981;&#24490;Twig&#40664;&#35748;&#30340;&#33258;&#21160;&#36867;&#36920;&#26426;&#21046;&#65307;&#28982;&#32780;&#65292;&#22312;&#26576;&#20123;&#24773;&#20917;&#19979;&#65292;&#20102;&#35299;&#22914;&#20309;&#20197;&#21450;&#20309;&#26102;&#24212;&#29992;&#19981;&#21516;&#30340;&#36867;&#36920;&#31574;&#30053;&#25110;&#29978;&#33267;&#23450;&#20041;&#33258;&#24049;&#30340;&#31574;&#30053;&#26159;&#38750;&#24120;&#37325;&#35201;&#30340;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312;&#20351;&#29992;Symfony&#26694;&#26550;&#30340;Twig&#27169;&#26495;&#24341;&#25806;&#26102;&#65292;&#30830;&#20445;&#36755;&#20986;&#30340;&#20869;&#23481;&#23433;&#20840;&#33267;&#20851;&#37325;&#35201;&#12290;Twig&#27169;&#26495;&#26412;&#36523;&#24182;&#19981;&#30452;&#25509;&#25903;&#25345;&#23545;HTML&#26631;&#31614;&#36827;&#34892;&#36716;&#20041;&#12290;&#28982;&#32780;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#22312;&#27169;&#26495;&#25991;&#20214;&#20013;&#20351;&#29992;<code>{{ }}<\/code>&#35821;&#27861;&#26469;&#23454;&#29616;&#36825;&#19968;&#21151;&#33021;&#12290;<\/p>\n<p>&#20197;&#19979;&#26159;&#22914;&#20309;&#22312;Twig&#27169;&#26495;&#20013;&#36716;&#20041;&#36755;&#20986;&#30340;&#19968;&#20010;&#31616;&#21333;&#20363;&#23376;&#65306;<\/p>\n<ol>\n<li>&#22312;&#20320;&#30340;&#35270;&#22270;&#25991;&#20214;&#20013;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#21464;&#37327;&#65292;&#24182;&#23558;&#20854;&#36716;&#25442;&#20026;&#23383;&#31526;&#20018;&#65306;\n<pre><code class=\"language-php\">$myVariable = \"Hello, World!\";\n$escapedString = htmlspecialchars($myVariable);<\/code><\/pre><\/li>\n<li>&#23558;&#19978;&#36848;&#29983;&#25104;&#30340;&#23383;&#31526;&#20018;&#25554;&#20837;&#21040;&#20320;&#30340;&#35270;&#22270;&#27169;&#26495;&#20013;&#65292;&#22914;&#19979;&#25152;&#31034;&#65306;\n<pre><code class=\"language-twig\">{% set myVariable = 'Hello, World!' %}\n&lt;div&gt;{{ escaped_string }}&lt;\/div&gt;<\/code><\/pre><\/li>\n<\/ol>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;<code>htmlspecialchars()<\/code>&#20989;&#25968;&#23558;`&#8217;Hello, World!'&#8221;&#36716;&#20041;&#25104;&#8221;Hello,&#8221;World!&#8221;&#65292;&#36825;&#26679;&#29992;&#25143;&#23601;&#30475;&#19981;&#21040;&#21407;&#22987;&#30340;&#29305;&#27530;&#23383;&#31526;&#20102;&#12290;<\/p>\n<p>&#27880;&#24847;&#65306;&#34429;&#28982;<code>htmlspecialchars()<\/code>&#20989;&#25968;&#21487;&#20197;&#24110;&#21161;&#38450;&#27490;SQL&#27880;&#20837;&#31561;&#25915;&#20987;&#65292;&#20294;&#24182;&#19981;&#26159;&#32477;&#23545;&#23433;&#20840;&#30340;&#35299;&#20915;&#26041;&#26696;&#12290;&#22914;&#26524;&#20320;&#38656;&#35201;&#22788;&#29702;&#26356;&#22797;&#26434;&#30340;&#24773;&#20917;&#65292;&#27604;&#22914;JSON&#25968;&#25454;&#25110;&#20854;&#20182;&#31867;&#22411;&#30340;&#25968;&#25454;&#65292;&#20320;&#21487;&#33021;&#38656;&#35201;&#32771;&#34385;&#20351;&#29992;&#20854;&#20182;&#25216;&#26415;&#65292;&#22914;PHP&#30340;&#20869;&#32622;htmlspecialchars()&#20989;&#25968;&#25110;&#32773;&#31532;&#19977;&#26041;&#24211;&#22914;PsrHttpMessageResponseInterface&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312;Symfony&#26694;&#26550;&#20013;&#65292;&#22914;&#26524;&#20320;&#24819;&#22312; Twig &#27169;&#26495;&#20013;&#36827;&#038;#34892..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1075","my1js","type-my1js","status-publish","hentry","my1js2nav-symfony"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/1075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=1075"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1075"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1075"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}