Latte szűrők

A szűrők olyan függvények, amelyek megváltoztatják vagy formázzák az adatokat a kívánt formára. Ez az összefoglaló a rendelkezésre álló beépített szűrőkről.

String / tömb átalakítás
batch lineáris adatok listázása egy táblázatban
breakLines HTML sorkizárt beillesztése az újsorok előtt.
bytes méretformázás bájtban
clamp az értéket a tartományba szorítja.
dataStream Adat URI protokoll átalakítás
date dátumformázás
explode a karakterláncot a megadott elválasztóval osztja fel.
first visszaadja a tömb első elemét vagy a karakterlánc első karakterét.
implode egy tömböt egy karakterlánccal kapcsol össze.
indent a szöveget balról behúzza a tabulátorok számával
join egy tömböt egy karakterlánchoz kapcsol.
last visszaadja a tömb utolsó elemét vagy a karakterlánc utolsó karakterét.
length egy karakterlánc vagy tömb hosszát adja vissza.
number formázza a számot
padLeft balról balra kiegészíti a karakterláncot a megadott hosszúságúra.
padRight a stringet jobbról a megadott hosszúságra egészíti ki.
random visszaadja a tömb véletlenszerű elemét vagy a karakterlánc karakterét.
repeat megismétli a karakterláncot
replace a keresett karakterlánc minden előfordulását helyettesíti a helyettesítő karakterlánccal.
replaceRE az összes előfordulást a reguláris kifejezésnek megfelelően helyettesíti.
reverse megfordítja az UTF-8 karakterláncot vagy tömböt.
slice kivonja egy tömb vagy egy karakterlánc egy szeletét.
sort rendezi a tömböt
spaceless eltávolítja a szóközöket, hasonlóan a spaceless taghez.
split egy karakterláncot a megadott elválasztójel alapján szétválaszt.
strip eltávolítja a szóközöket
stripHtml eltávolítja a HTML-címkéket és a HTML-elemeket szöveggé alakítja át.
substr visszaadja a karakterlánc egy részét
trim eltávolítja a szóközöket a karakterláncból.
translate fordítás más nyelvekre
truncate lerövidíti a hosszúságot, megőrizve az egész szavakat.
webalize az UTF-8 karakterláncot az URL-ben használt formához igazítja.
Betűhüvelyezés
capitalize kisbetűs, minden szó első betűje nagybetűs
firstUpper az első betűt nagybetűvé teszi.
lower a karakterláncot kisbetűvé teszi
upper nagybetűvé teszi a karakterláncot
Számok kerekítése
ceil kerekít egy számot egy adott pontosságig.
floor Egy számot adott pontosságra kerekít lefelé.
round kerekít egy számot adott pontosságra.
Escaping
escapeUrl az URL-ben szereplő paramétert elrejti
noescape változó nyomtatása szaggatás nélkül.
query lekérdezési karakterláncot generál az URL-ben.

A HTML (escapeHtml és escapeHtmlComment), XML (escapeXml), JavaScript (escapeJs), CSS (escapeCss) és iCalendar (escapeICal) számára is vannak escaping szűrők, amelyeket a Latte a kontextustudatos escapingnek köszönhetően maga használ, és nem kell megírni őket.

Biztonság
checkUrl szanálja a href attribútumon belül használt karakterláncot.
nocheck megakadályozza az automatikus URL-szanálást.

A src és a href attribútumokat automatikusan ellenőrzi, így a checkUrl szűrőt szinte nem is kell használni.

Minden beépített szűrő UTF-8 kódolású karakterláncokkal működik.

Használat

A Latte lehetővé teszi a szűrők hívását a pipajel jelölés használatával (az előző szóköz megengedett):

<h1>{$heading|upper}</h1>

A szűrők láncolhatók, ebben az esetben balról jobbra haladva alkalmazandók:

<h1>{$heading|lower|capitalize}</h1>

A paraméterek a szűrő neve után kerülnek, kettősponttal vagy vesszővel elválasztva:

<h1>{$heading|truncate:20,''}</h1>

A szűrők kifejezésekre alkalmazhatók:

{var $name = ($title|upper) . ($subtitle|lower)}</h1>

Egyéni szűrők így regisztrálhatók:

$latte = new Latte\Engine;
$latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));

Egy sablonban így használjuk:

<p>{$text|shortify}</p>
<p>{$text|shortify:100}</p>

Szűrők

batch (int length, mixed item)array

Szűrő, amely leegyszerűsíti a lineáris adatok táblázatos formában történő felsorolását. Egy tömb tömböt ad vissza a megadott számú elemmel. Ha megad egy második paramétert, akkor ezt az utolsó sor hiányzó elemeinek kitöltésére használja.

{var $items = ['a', 'b', 'c', 'd', 'e']}
<table>
{foreach ($items|batch: 3, 'No item') as $row}
	<tr>
		{foreach $row as $column}
			<td>{$column}</td>
		{/foreach}
	</tr>
{/foreach}
</table>

Nyomtatás:

<table>
	<tr>
		<td>a</td>
		<td>b</td>
		<td>c</td>
	</tr>
	<tr>
		<td>d</td>
		<td>e</td>
		<td>No item</td>
	</tr>
</table>

breakLines

HTML-sorszünetet illeszt be minden újsor előtt.

{var $s = "Text & with \n newline"}
{$s|breakLines}    {* kimenetek "Text &amp; with <br>\n newline" *}

bytes (int precision = 2)

Bájtban megadott méretet formázza ember által olvashatóvá.

{$size|bytes}     0 B, 1.25 GB, …
{$size|bytes:0}   10 B, 1 GB, …

ceil (int precision = 0)

Egy számot adott pontosságra kerekít.

{=3.4|ceil}         {* kimenet 4 *}
{=135.22|ceil:1}    {* kimenet 135.3 *}
{=135.22|ceil:3}    {* kimenet 135.22 *}

Lásd még floor, round.

capitalize

Visszaadja az érték címsoros változatát. A szavak nagybetűkkel kezdődnek, az összes többi karakter kisbetűs. PHP-bővítményt igényel: mbstring.

{='i like LATTE'|capitalize} {* kimenet 'I Like Latte' *}

Lásd még firstUpper, lower, upper.

checkUrl

Kényszeríti az URL szanálását. Ellenőrzi, hogy a változó tartalmaz-e webes URL-t (azaz HTTP/HTTPS protokollt), és megakadályozza a biztonsági kockázatot jelentő linkek írását.

{var $link = 'javascript:window.close()'}
<a data-href={$link|checkUrl}>checked</a>
<a data-href={$link}>unchecked</a>

Nyomtat:

<a data-href="">checked</a>
<a data-href="javascript:window.close()">unchecked</a>

Lásd mégeck.

clamp (int|float min, int|float max)

A min és max tartományba szorított értéket adja vissza.

{$level|clamp: 0, 255}

Létezik függvényként is.

dataStream (string mimetype = detect)

A tartalmat adat URI-sémává alakítja át. Használható képek HTML- vagy CSS-be való beillesztésére anélkül, hogy külső fájlokat kellene linkelni.

Legyen egy kép egy változóban $img = Image::fromFile('obrazek.gif'), akkor

<img src={$img|dataStream}>

Kinyomtatja például:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==">

PHP-bővítményt igényel: fileinfo.

date (string format)

Visszaad egy dátumot a megadott formátumban a strftime vagy date PHP függvények opcióinak használatával. A szűrő a dátumot UNIX időbélyegként, stringként vagy a DateTime típusú objektumként kapja meg.

{$today|date:'%d.%m.%Y'}
{$today|date:'j. n. Y'}

escapeUrl

Kikerül egy változót, amelyet URL-ben paraméterként kell használni.

<a href="http://example.com/{$name|escapeUrl}">{$name}</a>

Lásd még query.

explode (string separator = '')

Egy karakterláncot a megadott elválasztójel alapján szétválaszt, és karakterláncok tömbjét adja vissza. Alias a split számára.

{='one,two,three'|explode:','}    {* visszatér ['one', 'two', 'three'] *}

Ha az elválasztó üres karakterlánc (alapértelmezett érték), akkor a bemenet különálló karakterekre lesz felosztva:

{='123'|explode}                  {* returns ['1', '2', '3'] *}

Használhatja a split aliast is:

{='1,2,3'|split:','}              {* visszatér ['1', '2', '3'] *}

Lásd még: implode.

first

Visszaadja a tömb első elemét vagy a karakterlánc első karakterét:

{=[1, 2, 3, 4]|first}    {* kimenet 1 *}
{='abcd'|first}          {* kimenet 'a' *}

Lásd még last, random.

floor (int precision = 0)

Egy számot adott pontosságra kerekít.

{=3.5|floor}        {* outputs 3      *}
{=135.79|floor:1}   {* outputs 135.7  *}
{=135.79|floor:3}   {* outputs 135.79 *}

Lásd még ceil, round.

firstUpper

Az érték első betűjét nagybetűvé alakítja. PHP-bővítményt igényel mbstring.

{='the latte'|firstUpper}  {* kimenetek 'The latte' *}

Lásd még nagybetű, kisbetű, nagybetű.

implode (string glue = '')

Visszaad egy stringet, amely a tömbben lévő stringek összevonása. Alias a következőhöz: join.

{=[1, 2, 3]|implode}      {* outputs '123' *}
{=[1, 2, 3]|implode:'|'}  {* outputs '1|2|3' *}

A join alias is használható:

{=[1, 2, 3]|join}         {* outputs '123' *}

indent (int level = 1, string char = "\t")

A szöveg balról történő behúzása egy adott számú tabulátorral vagy más karakterrel, amelyet a második választható argumentumban adunk meg. Az üres sorok nem kerülnek behúzásra.

<div>
{block |indent}
<p>Hello</p>
{/block}
</div>

Nyomtatás:

<div>
	<p>Hello</p>
</div>

last

Visszaadja a tömb utolsó elemét vagy a karakterlánc utolsó karakterét:

{=[1, 2, 3, 4]|last}    {* outputs 4 *}
{='abcd'|last}          {* outputs 'd' *}

Lásd még first, random.

length

Egy karakterlánc vagy tömb hosszát adja vissza.

  • a stringek esetében UTF-8 karakterekben adja vissza a hosszúságot.
  • tömbök esetén az elemek számát adja vissza.
  • a Countable interfészt megvalósító objektumok esetében a count() visszatérési értékét használja.
  • az IteratorAggregate interfészt megvalósító objektumok esetében az iterator_count() visszatérési értékét használja.
{if ($users|length) > 10}
	...
{/if}

lower

Egy értéket kisbetűvé alakít. PHP-bővítményt igényel mbstring.

{='LATTE'|lower}   {* outputs 'latte' *}

Lásd még capitalize, firstUpper, upper.

nocheck

Megakadályozza az automatikus URL-szanálást. A Latte automatikusan ellenőrzi, hogy a változó tartalmaz-e webes URL-t (azaz HTTP/HTTPS protokollt), és megakadályozza a biztonsági kockázatot jelentő linkek írását.

Ha a hivatkozás más sémát használ, például javascript: vagy data:, és biztos a tartalmában, akkor a |nocheck segítségével kikapcsolhatja az ellenőrzést.

{var $link = 'javascript:window.close()'}

<a href={$link}>checked</a>
<a href={$link|nocheck}>unchecked</a>

Nyomtatások:

<a href="">checked</a>
<a href="javascript:window.close()">unchecked</a>

Lásd még checkUrl.

noescape

Letiltja az automatikus escapinget.

{var $trustedHtmlString = '<b>hello</b>'}
Escaped: {$trustedHtmlString}
Unescaped: {$trustedHtmlString|noescape}

Nyomtat:

Escaped: &lt;b&gt;hello&lt;/b&gt;
Unescaped: <b>hello</b>

A noescape szűrő visszaélése XSS sebezhetőséghez vezethet! Soha ne használja, hacsak nem teljesen biztos abban, hogy mit csinál, és hogy a nyomtatott karakterlánc megbízható forrásból származik.

number (int decimals = 0, string decPoint = '.', string thousandsSep = ',')

Egy számot adott számú tizedesjegyig formáz. Megadhatja a tizedesvessző és az ezres elválasztó karakterét is.

{1234.20 |number}              1,234
{1234.20 |number:1}            1,234.2
{1234.20 |number:2}            1,234.20
{1234.20 |number:2, ',', ' '}  1 234,20

padLeft (int length, string pad = ' ')

Egy adott hosszúságú karakterláncot balról egy másik karakterlánccal kitölti.

{='hello'|padLeft: 10, '123'}  {* outputs '12312hello' *}

padRight (int length, string pad = ' ')

Egy adott hosszúságú karakterláncot egy másik, jobbról jövő karakterlánccal kitölti.

{='hello'|padRight: 10, '123'}  {* outputs 'hello12312' *}

query

Dinamikusan generál egy lekérdezési karakterláncot az URL-ben:

<a href="http://example.com/?{[name: 'John Doe', age: 43]|query}">click</a>
<a href="http://example.com/?search={$search|query}">search</a>

Nyomtat:

<a href="http://example.com/?name=John+Doe&amp;age=43">click</a>
<a href="http://example.com/?search=Foo+Bar">search</a>

A null értékű kulcsok nem szerepelnek.

Lásd még escapeUrl.

random

Visszaadja a tömb véletlenszerű elemét vagy a karakterlánc karakterét:

{=[1, 2, 3, 4]|random}    {* example output: 3 *}
{='abcd'|random}          {* example output: 'b' *}

Lásd még first, last.

repeat (int count)

Megismétli a karakterláncot x-szer.

{='hello'|repeat: 3}  {* outputs 'hellohellohello' *}

replace (string|array search, string replace = '')

A keresett karakterlánc minden előfordulását helyettesítő karakterlánccal helyettesíti.

{='hello world'|replace: 'world', 'friend'}  {* outputs 'hello friend' *}

Egyszerre több csere is elvégezhető:

{='hello world'|replace: [h => l, l => h]}  {* outputs 'lehho worhd' *}

replaceRE (string pattern, string replace = '')

Az összes előfordulást helyettesíti a reguláris kifejezésnek megfelelően.

{='hello world'|replaceRE: '/l.*/', 'l'}  {* outputs 'hel' *}

reverse

Megfordítja a megadott karakterláncot vagy tömböt.

{var $s = 'Nette'}
{$s|reverse}    {* outputs 'etteN' *}
{var $a = ['N', 'e', 't', 't', 'e']}
{$a|reverse}    {* returns ['e', 't', 't', 'e', 'N'] *}

round (int precision = 0)

Egy számot adott pontosságra kerekít.

{=3.4|round}        {* outputs 3      *}
{=3.5|round}        {* outputs 4      *}
{=135.79|round:1}   {* outputs 135.8  *}
{=135.79|round:3}   {* outputs 135.79 *}

Lásd még ceil, floor.

slice (int start, int length = null, bool preserveKeys = false)

Egy tömb vagy egy karakterlánc egy szeletének kivonása.

{='hello'|slice: 1, 2}           {* outputs 'el' *}
{=['a', 'b', 'c']|slice: 1, 2}   {* outputs ['b', 'c'] *}

A slice-szűrő a array_slice PHP-funkcióként működik tömbök esetében, a mb_substr pedig karakterláncok esetében, UTF-8 módban a iconv_substr -re való visszalépéssel.

Ha a kezdet nem negatív, akkor a szekvencia a változóban ezzel a kezdőponttal kezdődik. Ha a start negatív, akkor a szekvencia a változó végétől ilyen messze kezdődik.

Ha a length értéke pozitív, akkor a szekvencia legfeljebb ennyi elemet tartalmaz. Ha a változó rövidebb, mint a hossz, akkor csak a rendelkezésre álló változóelemek lesznek jelen. Ha a hossz meg van adva és negatív, akkor a sorozat ennyi elemmel a változó vége előtt fog megállni. Ha nem adjuk meg, akkor a szekvencia az eltolódástól a változó végéig mindent tartalmazni fog.

A Filter alapértelmezés szerint átrendezi és visszaállítja az integer tömb kulcsát. Ez a viselkedés megváltoztatható a preserveKeys true értékre állításával. A string kulcsok ettől a paramétertől függetlenül mindig megmaradnak.

sort

Szűrő, amely egy tömböt rendezi és fenntartja az index hozzárendelést.

{foreach ($names|sort) as $name}
	...
{/foreach}

A tömb fordított sorrendbe rendezve.

{foreach ($names|sort|reverse) as $name}
	...
{/foreach}

Saját összehasonlító függvényt adhat át paraméterként:

{var $sorted = ($names|sort: fn($a, $b) => $b <=> $a)}

spaceless

Eltávolítja a felesleges szóközöket a kimenetből. Használhatod a strip aliast is.

{block |spaceless}
	<ul>
		<li>Hello</li>
	</ul>
{/block}

Nyomtat:

<ul> <li>Hello</li> </ul>

stripHtml

A HTML-t egyszerű szöveggé alakítja. Vagyis eltávolítja a HTML-címkéket, és a HTML-egységeket szöveggé alakítja.

{='<p>one &lt; two</p>'|stripHtml}  {* outputs 'one < two' *}

Az így kapott sima szöveg természetesen tartalmazhat olyan karaktereket, amelyek HTML-címkéket képviselnek, például a '&lt;p&gt;'|stripHtml átváltozik <p>. Soha ne adja ki az eredményül kapott szöveget a |noescape címmel, mivel ez biztonsági réshez vezethet.

substr (int offset, int length = null)

Kivonja egy karakterlánc egy szeletét. Ezt a szűrőt felváltotta a slice szűrő.

{$string|substr: 1, 2}

translate (string message, …args)

Kifejezéseket fordít le más nyelvekre. Ahhoz, hogy a szűrő elérhető legyen, be kell állítania a fordítót. A címkéket is használhatja a fordításhoz.

<a href="basket">{='Baskter'|translate}</a>
<span>{$item|translate}</span>

trim (string charlist = " \t\n\r\0\x0B\u{A0}")

Vezető és követő karakterek eltávolítása, alapértelmezés szerint szóköz.

{='  I like Latte.  '|trim}    {* outputs 'I like Latte.' *}
{='  I like Latte.'|trim: '.'} {* outputs '  I like Latte' *}

truncate (int length, string append = '…')

Rövidíti a karakterláncot a megadott maximális hosszúságra, de megpróbálja megőrizni az egész szavakat. Ha a karakterlánc csonkolva van, ellipszist ad a végére (ez a második paraméterrel módosítható).

{var $title = 'Hello, how are you?'}
{$title|truncate:5}  {* Hell…                *}
{$title|truncate:17} {* Hello, how are…      *}
{$title|truncate:30} {* Hello, how are you?  *}

upper

Egy értéket nagybetűvé alakít. A mbstring PHP-bővítményt igényli.

{='latte'|upper}  {* outputs 'LATTE' *}

Lásd még capitalize, firstUpper, lower.

webalize

Átalakítja ASCII-re.

A szóközöket kötőjelekké alakítja. Eltávolítja a nem alfanumerikus karaktereket, aláhúzásokat vagy kötőjeleket. Átalakítja kisbetűvé. Eltávolítja a vezető és az utolsó szóközöket is.

{var $s = 'Our 10. product'}
{$s|webalize}    {* outputs 'our-10-product' *}

Szükséges a nette/utils csomag.

verzió: 3.0