File size: 6.61Kb
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>escape</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Руководство по Smarty">
<link rel="up" href="language.modifiers.html" title="Chapter 5. Модификаторы переменных">
<link rel="prev" href="language.modifier.default.html" title="default">
<link rel="next" href="language.modifier.indent.html" title="indent">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">escape</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="language.modifier.default.html">Prev</a> </td>
<th width="60%" align="center">Chapter 5. Модификаторы переменных</th>
<td width="20%" align="right"> <a accesskey="n" href="language.modifier.indent.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="sect1" title="escape">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="language.modifier.escape"></a>escape</h2></div></div></div>
<p>
Используется для кодирования / экранирования спецсимволов по алгоритмам
экранирования HTML, URL'ов, одиночных кавычек, hex-экранирования,
hex-сущностей, javascript и экранирования почтовых адресов.
По умолчанию активирован режим экранирования HTML.
</p>
<div class="informaltable"><table border="1">
<colgroup>
<col align="center">
<col align="center">
<col align="center">
<col align="center">
<col align="center">
<col>
</colgroup>
<thead><tr>
<th align="center">Позиция параметра</th>
<th align="center">Тип</th>
<th align="center">Обязателен</th>
<th align="center">Possible Values</th>
<th align="center">По умолчанию</th>
<th>Описание</th>
</tr></thead>
<tbody>
<tr>
<td align="center">1</td>
<td align="center">string</td>
<td align="center">Нет</td>
<td align="center">
<code class="literal">html</code>,<code class="literal">htmlall</code>,<code class="literal">url</code>,<code class="literal">urlpathinfo</code>,<code class="literal">quotes</code>,<code class="literal">hex</code>,<code class="literal">hexentity</code>,<code class="literal">javascript</code>,<code class="literal">mail</code>
</td>
<td align="center"><code class="literal">html</code></td>
<td>формат экранирования</td>
</tr>
<tr>
<td align="center">2</td>
<td align="center">string</td>
<td align="center">Нет</td>
<td align="center">
<code class="literal">ISO-8859-1</code>, <code class="literal">UTF-8</code>, ... любая кодировка, поддерживаемая функцией <a class="ulink" href="http://php.net/htmlentities" target="_top">htmlentities()</a>
</td>
<td align="center"><code class="literal">ISO-8859-1</code></td>
<td>Кодировка для экранирования, передаваемая в htmlentities() и т.д.</td>
</tr>
</tbody>
</table></div>
<div class="example">
<a name="id2657241"></a><p class="title"><b>Example 5.10. escape</b></p>
<div class="example-contents">
<pre class="programlisting">
<?php
$smarty->assign('articleTitle',
"'Stiff Opposition Expected to Casketless Funeral Plan'"
);
$smarty->assign('EmailAddress','[email protected]');
?>
</pre>
<p>
Шаблон:
</p>
<pre class="programlisting">
{$articleTitle}
{$articleTitle|escape}
{$articleTitle|escape:'html'} {* экранирует & " ' < > *}
{$articleTitle|escape:'htmlall'} {* экранирует ВСЕ HTML-сущности *}
{$articleTitle|escape:'url'}
{$articleTitle|escape:'quotes'}
<a href="mailto:{$EmailAddress|escape:"hex"}">{$EmailAddress|escape:"hexentity"}</a>
{$EmailAddress|escape:'mail'} {* конвертирует e-mail в текст *}
{'[email protected]'|escape:'mail'}
</pre>
<p>
Результат обработки:
</p>
<pre class="screen">
'Stiff Opposition Expected to Casketless Funeral Plan'
&#039;Stiff Opposition Expected to Casketless Funeral Plan&#039;
&#039;Stiff Opposition Expected to Casketless Funeral Plan&#039;
&#039;Stiff Opposition Expected to Casketless Funeral Plan&#039;
%27Stiff+Opposition+Expected+to+Casketless+Funeral+Plan%27
\'Stiff Opposition Expected to Casketless Funeral Plan\'
<a href="mailto:%62%6f%..snip..%65%74">&#x62;&#x6f;&#x62..snip..&#x65;&#x74;</a>
smarty [AT] example [DOT] com
mail [AT] example [DOT] com
</pre>
<p>
Обратите внимание, что родные функции PHP могут использоваться в качестве
модификаторов, так что следующие приёмы сработают
</p>
<pre class="screen">
{* GET-переменная rewind передает текущий адрес *}
<a href="{$SCRIPT_NAME}?page=foo&rewind={$smarty.server.REQUEST_URI|urlencode}">click here</a>
</pre>
<p>
Это очень полезно для e-mail'ов, но см. также
<a class="link" href="language.function.mailto.html" title="{mailto}">{mailto}</a>
</p>
<pre class="screen">
{* email address mangled *}
<a href="mailto:{$EmailAddress|escape:'hex'}">{$EmailAddress|escape:'mail'}</a>
</pre>
</div>
</div>
<br class="example-break"><p>
См. также
<a class="link" href="language.escaping.html" title="Предотвращение обработки Smarty">Предотвращение обработки Smarty</a>,
<a class="link" href="language.function.mailto.html" title="{mailto}">{mailto}</a>
и
<a class="link" href="tips.obfuscating.email.html" title="Сокрытие E-mail адреса">Сокрытие E-mail адреса</a>.
</p>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="language.modifier.default.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="language.modifiers.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="language.modifier.indent.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">default </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> indent</td>
</tr>
</table>
</div>
</body>
</html>