Φίλτρα Latte

Τα φίλτρα είναι συναρτήσεις που αλλάζουν ή μορφοποιούν τα δεδομένα σε μια μορφή που θέλουμε. Αυτή είναι μια περίληψη των ενσωματωμένων φίλτρων που είναι διαθέσιμα.

Μετασχηματισμός αλφαριθμητικών/συστοιχιών
batch καταχώριση γραμμικών δεδομένων σε πίνακα
breakLines Εισαγωγή διαχωρισμού γραμμών HTML πριν από όλες τις νέες γραμμές
bytes μορφοποιεί το μέγεθος σε bytes
clamp συγκρατεί την τιμή στο εύρος
dataStream Μετατροπή πρωτοκόλλου URI δεδομένων
date μορφοποιεί την ημερομηνία και την ώρα
explode Διαχωρίζει μια συμβολοσειρά με το δεδομένο διαχωριστικό
first επιστρέφει το πρώτο στοιχείο του πίνακα ή τον χαρακτήρα της συμβολοσειράς
group ομαδοποιεί δεδομένα σύμφωνα με διάφορα κριτήρια
implode συνδέει έναν πίνακα με μια συμβολοσειρά
indent εσοχή του κειμένου από αριστερά με αριθμό tabs
join ενώνει έναν πίνακα σε μια συμβολοσειρά
last επιστρέφει το τελευταίο στοιχείο του πίνακα ή τον χαρακτήρα της συμβολοσειράς
length επιστρέφει το μήκος μιας συμβολοσειράς ή ενός πίνακα
localDate μορφοποιεί την ημερομηνία και την ώρα σύμφωνα με την τοπική γλώσσα
number μορφοποίηση αριθμού
padLeft συμπληρώνει τη συμβολοσειρά στο συγκεκριμένο μήκος από αριστερά
padRight συμπληρώνει τη συμβολοσειρά στο δεδομένο μήκος από τα δεξιά
random επιστρέφει τυχαίο στοιχείο πίνακα ή χαρακτήρα συμβολοσειράς
repeat επαναλαμβάνει τη συμβολοσειρά
replace αντικαθιστά όλες τις εμφανίσεις της συμβολοσειράς αναζήτησης με την αντικατάσταση
replaceRE αντικαθιστά όλες τις εμφανίσεις σύμφωνα με την κανονική έκφραση
reverse αντιστρέφει μια συμβολοσειρά ή έναν πίνακα UTF-8
slice εξάγει ένα τμήμα ενός πίνακα ή μιας συμβολοσειράς
sort ταξινομεί έναν πίνακα
spaceless αφαιρεί κενά, παρόμοια με την ετικέτα χωρίς κενό
split διαχωρίζει μια συμβολοσειρά με βάση το δεδομένο διαχωριστικό
strip αφαιρεί τα κενά
stripHtml αφαιρεί ετικέτες HTML και μετατρέπει οντότητες HTML σε κείμενο
substr επιστρέφει μέρος της συμβολοσειράς
trim αφαιρεί το κενό διάστημα από τη συμβολοσειρά
translate μετάφραση σε άλλες γλώσσες
truncate συντομεύει το μήκος διατηρώντας ολόκληρες λέξεις
webalize προσαρμόζει τη συμβολοσειρά UTF-8 στο σχήμα που χρησιμοποιείται στη διεύθυνση URL
Περιτύπωμα γραμμάτων
capitalize πεζά γράμματα, το πρώτο γράμμα κάθε λέξης κεφαλαίο
firstUpper κάνει το πρώτο γράμμα κεφαλαίο
lower κάνει μια συμβολοσειρά πεζά
upper κάνει μια συμβολοσειρά κεφαλαίο
Στρογγυλοποίηση αριθμών
ceil στρογγυλοποιεί έναν αριθμό με δεδομένη ακρίβεια
floor στρογγυλοποιεί έναν αριθμό προς τα κάτω με δεδομένη ακρίβεια
round στρογγυλοποιεί έναν αριθμό σε δεδομένη ακρίβεια
Escaping
escapeUrl αποφεύγει την παράμετρο στη διεύθυνση URL
noescape εκτυπώνει μια μεταβλητή χωρίς διαφυγή
query δημιουργεί μια συμβολοσειρά ερωτήματος στη διεύθυνση URL

Υπάρχουν επίσης φίλτρα διαφυγής για HTML (escapeHtml και escapeHtmlComment), XML (escapeXml), JavaScript (escapeJs), CSS (escapeCss) και iCalendar (escapeICal), τα οποία το Latte χρησιμοποιεί το ίδιο χάρη στην διαφυγή με επίγνωση του περιβάλλοντος και δεν χρειάζεται να τα γράψετε.

Ασφάλεια
checkUrl Αποκαθαρίζει τη συμβολοσειρά για χρήση μέσα στο χαρακτηριστικό href.
nocheck αποτρέπει την αυτόματη εξυγίανση URL

Latte οι έλεγχοι των χαρακτηριστικών src και href γίνονται αυτόματα, οπότε σχεδόν δεν χρειάζεται να χρησιμοποιήσετε το φίλτρο checkUrl.

Όλα τα ενσωματωμένα φίλτρα λειτουργούν με κωδικοποιημένες συμβολοσειρές UTF-8.

Χρήση

Το Latte επιτρέπει την κλήση φίλτρων με τη χρήση του συμβολισμού με το σύμβολο της πίπας (επιτρέπεται το κενό που προηγείται):

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

Τα φίλτρα μπορούν να είναι αλυσιδωτά, οπότε εφαρμόζονται με τη σειρά από αριστερά προς τα δεξιά:

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

Οι παράμετροι τοποθετούνται μετά το όνομα του φίλτρου χωρισμένες με άνω και κάτω τελεία ή κόμμα:

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

Τα φίλτρα μπορούν να εφαρμοστούν στην έκφραση:

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

Προσαρμοσμένα φίλτρα μπορούν να καταχωρηθούν με αυτόν τον τρόπο:

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

Τα χρησιμοποιούμε σε ένα πρότυπο όπως αυτό:

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

Φίλτρα

batch (int $length, mixed $item)array

Φίλτρο που απλοποιεί την καταχώριση γραμμικών δεδομένων με τη μορφή πίνακα. Επιστρέφει έναν πίνακα με τον δεδομένο αριθμό στοιχείων. Εάν δώσετε μια δεύτερη παράμετρο, αυτή χρησιμοποιείται για να συμπληρώσει τα στοιχεία που λείπουν στην τελευταία γραμμή.

{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>

Εκτυπώσεις:

<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>

Βλέπε επίσης group και ετικέτα iterateWhile.

breakLines

Εισάγει διαλείμματα γραμμής HTML πριν από όλες τις νέες γραμμές.

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

bytes (int $precision=2)

Διαμορφώνει το μέγεθος σε bytes σε μορφή αναγνώσιμη από τον άνθρωπο. Εάν έχει οριστεί η τοπική γλώσσα, χρησιμοποιούνται τα αντίστοιχα διαχωριστικά δεκαδικών και χιλιάδων.

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

ceil (int $precision=0)

Στρογγυλοποιεί έναν αριθμό με δεδομένη ακρίβεια.

{=3.4|ceil}         {* έξοδοι 4 *}
{=135.22|ceil:1}    {* έξοδοι 135.3 *}
{=135.22|ceil:3}    {* έξοδοι 135.22 *}

Βλέπε επίσης floor, round.

capitalize

Επιστρέφει μια έκδοση της τιμής με τίτλο. Οι λέξεις θα ξεκινούν με κεφαλαία γράμματα, όλοι οι υπόλοιποι χαρακτήρες είναι πεζά. Απαιτεί την επέκταση PHP mbstring.

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

Βλέπε επίσης firstUpper, lower, upper.

checkUrl

Επιβάλλει την εξυγίανση URL. Ελέγχει αν η μεταβλητή περιέχει μια διεύθυνση URL στο διαδίκτυο (δηλαδή πρωτόκολλο HTTP/HTTPS) και αποτρέπει τη συγγραφή συνδέσμων που μπορεί να αποτελούν κίνδυνο για την ασφάλεια.

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

Εκτυπώνει:

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

Βλέπε επίσης nocheck.

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

Επιστρέφει την τιμή που έχει περιοριστεί στο συνολικό εύρος των min και max.

{$level|clamp: 0, 255}

Υπάρχει επίσης ως συνάρτηση.

dataStream (string $mimetype=detect)

Μετατρέπει το περιεχόμενο σε σχήμα URI δεδομένων. Μπορεί να χρησιμοποιηθεί για την εισαγωγή εικόνων σε HTML ή CSS χωρίς την ανάγκη σύνδεσης εξωτερικών αρχείων.

Ας έχουμε μια εικόνα σε μια μεταβλητή $img = Image::fromFile('obrazek.gif'), τότε

<img src={$img|dataStream}>

Εκτυπώνει για παράδειγμα:

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

Απαιτεί επέκταση PHP fileinfo.

date (string $format)

Διαμορφώνει την ημερομηνία και την ώρα σύμφωνα με τη μάσκα που χρησιμοποιείται από τη συνάρτηση της PHP date. Το φίλτρο δέχεται την ημερομηνία σε μορφή χρονοσφραγίδας UNIX, ως συμβολοσειρά ή ως αντικείμενο DateTimeInterface.

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

Βλέπε επίσης localDate.

escapeUrl

Διασώζει μια μεταβλητή που θα χρησιμοποιηθεί ως παράμετρος σε URL.

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

Βλέπε επίσης query.

explode (string $separator='')

Διαχωρίζει μια συμβολοσειρά με βάση το δεδομένο διαχωριστικό και επιστρέφει έναν πίνακα συμβολοσειρών. Ψευδώνυμο για το split.

{='one,two,three'|explode:','}    {* returns ['one', 'two', 'three'] *}

Εάν ο διαχωριστής είναι κενή συμβολοσειρά (προεπιλεγμένη τιμή), η είσοδος θα διαιρεθεί σε μεμονωμένους χαρακτήρες:

{='123'|explode}                  {* επιστρέφει ['1', '2', '3'] *}

Μπορείτε επίσης να χρησιμοποιήσετε το ψευδώνυμο split:

{='1,2,3'|split:','}              {* επιστρέφει ['1', '2', '3'] *}

Δείτε επίσης implode.

first

Επιστρέφει το πρώτο στοιχείο του πίνακα ή τον χαρακτήρα της συμβολοσειράς:

{=[1, 2, 3, 4]|first}    {* έξοδοι 1 *}
{='abcd'|first}          {* έξοδοι 'a' *}

Βλέπε επίσης last, random.

floor (int $precision=0)

Στρογγυλοποιεί έναν αριθμό με δεδομένη ακρίβεια.

{=3.5|floor}        {* έξοδοι 3 *}
{=135.79|floor:1}   {* έξοδοι 135.7 *}
{=135.79|floor:3}   {* έξοδοι 135.79 *}

Βλέπε επίσης ceil, round.

firstUpper

Μετατρέπει το πρώτο γράμμα της τιμής σε κεφαλαίο. Απαιτεί την επέκταση PHP mbstring.

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

Βλέπε επίσης capitalize, lower, upper.

group (string|int|\Closure $by)array

Το φίλτρο ομαδοποιεί τα δεδομένα σύμφωνα με διάφορα κριτήρια.

Σε αυτό το παράδειγμα, οι γραμμές του πίνακα ομαδοποιούνται με βάση τη στήλη categoryId. Η έξοδος είναι ένας πίνακας πινάκων όπου το κλειδί είναι η τιμή στη στήλη categoryId. Διαβάστε τις λεπτομερείς οδηγίες.

{foreach ($items|group: categoryId) as $categoryId => $categoryItems}
    <ul>
        {foreach $categoryItems as $item}
            <li>{$item->name}</li>
        {/foreach}
    </ul>
{/foreach}

Δείτε επίσης batch, τη συνάρτηση group και την ετικέτα iterateWhile.

implode (string $glue='')

Επιστρέφει μια συμβολοσειρά που είναι η συνένωση των συμβολοσειρών του πίνακα. Ψευδώνυμο για το join.

{=[1, 2, 3]|implode}      {* έξοδοι '123' *}
{=[1, 2, 3]|implode:'|'}  {* έξοδοι '1|2|3' *}

Μπορείτε επίσης να χρησιμοποιήσετε το ψευδώνυμο join:

{=[1, 2, 3]|join}         {* έξοδοι '123' *}

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

Παρεμβάλλει ένα κείμενο από τα αριστερά κατά ένα δεδομένο αριθμό tabs ή άλλων χαρακτήρων που καθορίζουμε στο δεύτερο προαιρετικό όρισμα. Οι κενές γραμμές δεν εσοδεύονται.

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

Εκτυπώνει:

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

last

Επιστρέφει το τελευταίο στοιχείο του πίνακα ή το χαρακτήρα της συμβολοσειράς:

{=[1, 2, 3, 4]|last}    {* έξοδοι 4 *}
{='abcd'|last}          {* έξοδοι 'd' *}

Βλέπε επίσης first, random.

length

Επιστρέφει το μήκος μιας συμβολοσειράς ή ενός πίνακα.

  • για συμβολοσειρές, θα επιστρέψει το μήκος σε χαρακτήρες UTF-8
  • για πίνακες, επιστρέφει τον αριθμό των στοιχείων.
  • για αντικείμενα που υλοποιούν τη διεπαφή Countable, θα χρησιμοποιήσει την τιμή επιστροφής της count()
  • για αντικείμενα που υλοποιούν τη διεπαφή IteratorAggregate, θα χρησιμοποιήσει την τιμή επιστροφής της iterator_count()
{if ($users|length) > 10}
	...
{/if}

localDate (?string $format=null, ?string $date=null, ?string $time=null)

Διαμορφώνει την ημερομηνία και την ώρα σύμφωνα με την τοπική γλώσσα, εξασφαλίζοντας συνεπή και εντοπισμένη εμφάνιση των δεδομένων ώρας σε διάφορες γλώσσες και περιοχές. Το φίλτρο δέχεται την ημερομηνία ως χρονοσφραγίδα UNIX, συμβολοσειρά ή αντικείμενο DateTimeInterface.

{$date|localDate}                  {* 15. dubna 2024 *}
{$date|format: yM}                 {* 4/2024 *}
{$date|localDate: date: medium}    {* 15. 4. 2024 *}

Αν χρησιμοποιήσετε το φίλτρο χωρίς παραμέτρους, θα εξάγει την ημερομηνία σε επίπεδο μακράς μορφής, όπως εξηγείται παρακάτω.

α) Χρήση της μορφής

Η παράμετρος format περιγράφει ποια στοιχεία της ώρας θα πρέπει να εμφανίζονται. Χρησιμοποιεί κώδικες γραμμάτων, όπου ο αριθμός των επαναλήψεων επηρεάζει το πλάτος της εξόδου:

Έτος y / yy / yyyy 2024 / 24 / 2024
Μήνας M / MM / MMMMMMM 8 / 08 / ΑυγΑυγούστου
Ημέρα d / dd / EEEEE 1 / 01 / ΚυρΚυριακή
Ώρα j / H / h προτιμώμενη / 24ωρη / 12ωρη
Minute m / mm 5 / 05 (2 ψηφία όταν συνδυάζεται με δευτερόλεπτα)
Second s / ss 8 / 08 (2 ψηφία όταν συνδυάζονται με λεπτά)

Η σειρά των κωδικών στη μορφή δεν έχει σημασία, καθώς η σειρά των στοιχείων θα εμφανίζεται σύμφωνα με τις συμβάσεις της τοπικής γλώσσας. Επομένως, η μορφή είναι ανεξάρτητη από την τοπική γλώσσα. Για παράδειγμα, η μορφή yyyyMMMMd στην τοπική γλώσσα en_US δίνει την ένδειξη April 15, 2024, ενώ στην τοπική γλώσσα cs_CZ δίνει την ένδειξη 15. dubna 2024:

locale: el-GR en_US
format: 'dMy' 10/8/2024 8/10/2024
format: 'yM' 8/2024 8/2024
format: 'yyyyMMMM' Αύγουστος 2024 August 2024
format: 'MMMM' Αυγούστου August
format: 'jm' 5:54 μ.μ. 5:54 PM
format: 'Hm' 17:54 17:54
format: 'hm' 5:54 μ.μ. 5:54 PM

β) Χρήση προκαθορισμένων στυλ

Οι παράμετροι date και time καθορίζουν το επίπεδο λεπτομέρειας για την εμφάνιση της ημερομηνίας και της ώρας. Μπορείτε να επιλέξετε ανάμεσα σε διάφορα επίπεδα: full, long, medium, short. Μπορείτε να εμφανίσετε μόνο την ημερομηνία, μόνο την ώρα ή και τα δύο:

locale: el-GR en_US
date: short 23/1/78 1/23/78
date: medium 23 Ιαν 1978 Jan 23, 1978
date: long 23 Ιανουαρίου 1978 January 23, 1978
date: full Δευτέρα 23 Ιανουαρίου 1978 Monday, January 23, 1978
time: short 8:30 π.μ. 8:30 AM
time: medium 8:30:59 π.μ. 8:30:59 AM
time: long 8:30:59 π.μ. CET 8:30:59 AM GMT+1
date: short, time: short 23/1/78, 8:30 π.μ. 1/23/78, 8:30 AM
date: medium, time: short 23 Ιαν 1978, 8:30 π.μ. Jan 23, 1978, 8:30 AM
date: long, time: short 23 Ιανουαρίου 1978 στις 8:30 π.μ. January 23, 1978 at 8:30 AM

Για την ημερομηνία, μπορείτε επίσης να χρησιμοποιήσετε το πρόθεμα relative- (π.χ. relative-short), το οποίο για ημερομηνίες κοντά στο παρόν θα εμφανίσει yesterday, today ή tomorrow, διαφορετικά, θα εμφανίσει με τον τυπικό τρόπο.

{$date|localDate: date: relative-short}    {* yesterday *}

Βλέπε επίσης ημερομηνία.

lower

Μετατρέπει μια τιμή σε πεζά γράμματα. Απαιτεί την επέκταση PHP mbstring.

{='LATTE'|lower}   {* έξοδοι 'latte' *}

Βλέπε επίσης capitalize, firstUpper, upper.

nocheck

Αποτρέπει την αυτόματη εξυγίανση URL. Το Latte ελέγχει αυτόματα αν η μεταβλητή περιέχει μια διεύθυνση URL στο διαδίκτυο (δηλαδή πρωτόκολλο HTTP/HTTPS) και αποτρέπει τη συγγραφή συνδέσμων που μπορεί να αποτελούν κίνδυνο για την ασφάλεια.

Αν ο σύνδεσμος χρησιμοποιεί διαφορετικό σχήμα, όπως javascript: ή data:, και είστε σίγουροι για το περιεχόμενό του, μπορείτε να απενεργοποιήσετε τον έλεγχο μέσω του |nocheck.

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

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

Εκτυπώσεις:

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

Βλέπε επίσης checkUrl.

noescape

Απενεργοποιεί την αυτόματη διαφυγή.

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

Εκτυπώνει:

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

Η κατάχρηση του φίλτρου noescape μπορεί να οδηγήσει σε ευπάθεια XSS! Ποτέ μην το χρησιμοποιείτε εκτός αν είστε απολύτως σίγουροι για το τι κάνετε και ότι η συμβολοσειρά που εκτυπώνετε προέρχεται από αξιόπιστη πηγή.

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

Διαμορφώνει έναν αριθμό σε έναν καθορισμένο αριθμό δεκαδικών ψηφίων. Εάν έχει οριστεί η τοπική γλώσσα, χρησιμοποιούνται τα αντίστοιχα διαχωριστικά δεκαδικών και χιλιάδων.

{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

number (string $format)

Η παράμετρος format σας επιτρέπει να καθορίσετε την εμφάνιση των αριθμών ακριβώς σύμφωνα με τις ανάγκες σας. Απαιτεί μια καθορισμένη τοπική γλώσσα. Η μορφή αποτελείται από διάφορους ειδικούς χαρακτήρες, την πλήρη περιγραφή των οποίων μπορείτε να βρείτε στην τεκμηρίωση DecimalFormat:

  • <c id=6/> υποχρεωτικό ψηφίο, εμφανίζεται πάντα, ακόμη και αν είναι μηδέν
  • # προαιρετικό ψηφίο, εμφανίζεται μόνο αν ο αριθμός έχει ψηφίο στη συγκεκριμένη θέση
  • @ σημαντικό ψηφίο, βοηθά στην εμφάνιση του αριθμού με συγκεκριμένο αριθμό σημαντικών ψηφίων
  • . σηματοδοτεί τη θέση του δεκαδικού διαχωριστικού (κόμμα ή τελεία, ανάλογα με την τοπική γλώσσα)
  • , χρησιμοποιείται για το διαχωρισμό ομάδων ψηφίων, συνήθως χιλιάδων
  • % πολλαπλασιάζει τον αριθμό με το 100 και προσθέτει το σύμβολο του ποσοστού

Ας δούμε μερικά παραδείγματα. Στο πρώτο παράδειγμα, τα δύο δεκαδικά ψηφία είναι υποχρεωτικά- στο δεύτερο, είναι προαιρετικά. Στο τρίτο παράδειγμα εμφανίζεται συμπλήρωση με μηδενικά και στις δύο πλευρές, ενώ στο τέταρτο εμφανίζονται μόνο τα υπάρχοντα ψηφία:

{1234.5|number: '#,##0.00'}     {* 1,234.50 *}
{1234.5|number: '#,##0.##'}     {* 1,234.5 *}
{1.23  |number: '000.000'}      {* 001.230 *}
{1.2   |number: '##.##'}        {* 1.2 *}

Τα σημαντικά ψηφία καθορίζουν πόσα ψηφία, ανεξάρτητα από το δεκαδικό σημείο, θα πρέπει να εμφανίζονται, στρογγυλοποιώντας τον αριθμό εάν είναι απαραίτητο:

{1234|number: '@@'}             {* 1200 *}
{1234|number: '@@@'}            {* 1230 *}
{1234|number: '@@@#'}           {* 1234 *}
{1.2345|number: '@@@'}          {* 1.23 *}
{0.00123|number: '@@'}          {* 0.0012 *}

Ένας εύκολος τρόπος για να εμφανίσετε έναν αριθμό ως ποσοστό. Ο αριθμός πολλαπλασιάζεται με το 100 και προστίθεται το σύμβολο %:

{0.1234|number: '#.##%'}        {* 12.34% *}

Μπορούμε να ορίσουμε μια διαφορετική μορφή για θετικούς και αρνητικούς αριθμούς, οι οποίοι χωρίζονται με έναν χαρακτήρα ;. Με αυτόν τον τρόπο, για παράδειγμα, οι θετικοί αριθμοί μπορούν να εμφανίζονται με το σύμβολο +:

{42|number: '#.##;(#.##)'}      {* 42 *}
{-42|number: '#.##;(#.##)'}     {* (42) *}
{42|number: '+#.##;-#.##'}      {* +42 *}
{-42|number: '+#.##;-#.##'}     {* -42 *}

Να θυμάστε ότι η πραγματική εμφάνιση των αριθμών μπορεί να διαφέρει ανάλογα με τις ρυθμίσεις της τοπικής γλώσσας. Για παράδειγμα, σε ορισμένες χώρες χρησιμοποιείται κόμμα αντί για τελεία ως διαχωριστικό δεκαδικού ψηφίου. Αυτό το φίλτρο το λαμβάνει αυτόματα υπόψη, οπότε δεν χρειάζεται να ανησυχείτε γι' αυτό.

padLeft (int $length, string $pad=' ')

Συμπληρώνει μια συμβολοσειρά σε συγκεκριμένο μήκος με μια άλλη συμβολοσειρά από αριστερά.

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

padRight (int $length, string $pad=' ')

Γεμίζει μια συμβολοσειρά σε ένα συγκεκριμένο μήκος με μια άλλη συμβολοσειρά από δεξιά.

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

query

Δημιουργεί δυναμικά μια συμβολοσειρά ερωτήματος στη διεύθυνση URL:

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

Εκτυπώσεις:

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

null παραλείπονται.

Βλέπε επίσης escapeUrl.

random

Επιστρέφει τυχαίο στοιχείο πίνακα ή χαρακτήρα συμβολοσειράς:

{=[1, 2, 3, 4]|random}    {* παράδειγμα εξόδου: 3 *}
{='abcd'|random}          {* παράδειγμα εξόδου: 'b' *}

Βλέπε επίσης first, last.

repeat (int $count)

Επαναλαμβάνει τη συμβολοσειρά x φορές.

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

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

Αντικαθιστά όλες τις εμφανίσεις της συμβολοσειράς αναζήτησης με τη συμβολοσειρά αντικατάστασης.

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

Μπορούν να γίνουν πολλαπλές αντικαταστάσεις ταυτόχρονα:

{='hello world'|replace: [h => l, l => h]}  {* έξοδοι 'lehho worhd' *}

replaceRE (string $pattern, string $replace='')

Αντικαθιστά όλες τις εμφανίσεις σύμφωνα με την κανονική έκφραση.

{='hello world'|replaceRE: '/l.*/', 'l'}  {* έξοδοι 'hel' *}

reverse

Αντιστρέφει δεδομένη συμβολοσειρά ή πίνακα.

{var $s = 'Nette'}
{$s|reverse}    {* έξοδοι 'etteN' *}
{var $a = ['N', 'e', 't', 't', 'e']}
{$a|reverse}    {* returns ['e', 't', 't', 'e', 'N'] *}

round (int $precision=0)

Στρογγυλοποιεί έναν αριθμό με δεδομένη ακρίβεια.

{=3.4|round}        {* έξοδοι 3 *}
{=3.5|round}        {* έξοδοι 4 *}
{=135.79|round:1}   {* έξοδοι 135.8 *}
{=135.79|round:3}   {* έξοδοι 135.79 *}

Βλέπε επίσης ceil, floor.

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

Εξάγει μια φέτα ενός πίνακα ή μιας συμβολοσειράς.

{='hello'|slice: 1, 2}           {* έξοδοι 'el' *}
{=['a', 'b', 'c']|slice: 1, 2}   {* outputs ['b', 'c'] *}

Το φίλτρο slice λειτουργεί όπως η συνάρτηση array_slice της PHP για πίνακες και mb_substr για συμβολοσειρές με μια υποχώρηση στο iconv_substr σε λειτουργία UTF-8.

Εάν η αρχή είναι μη αρνητική, η ακολουθία θα ξεκινήσει από αυτή την αρχή στη μεταβλητή. Εάν το start είναι αρνητικό, η ακολουθία θα ξεκινήσει τόσο μακριά από το τέλος της μεταβλητής.

Αν το length δίνεται και είναι θετικό, τότε η ακολουθία θα έχει μέχρι τόσα στοιχεία. Εάν η μεταβλητή είναι μικρότερη από το μήκος, τότε θα υπάρχουν μόνο τα διαθέσιμα στοιχεία της μεταβλητής. Αν το μήκος δίνεται και είναι αρνητικό, τότε η ακολουθία θα σταματήσει τόσα στοιχεία από το τέλος της μεταβλητής. Αν παραλείπεται, τότε η ακολουθία θα έχει τα πάντα από το offset μέχρι το τέλος της μεταβλητής.

Το φίλτρο θα αναδιατάξει και θα επαναφέρει τα κλειδιά του ακέραιου πίνακα από προεπιλογή. Αυτή η συμπεριφορά μπορεί να αλλάξει θέτοντας το preserveKeys σε true. Τα αλφαριθμητικά κλειδιά διατηρούνται πάντα, ανεξάρτητα από αυτήν την παράμετρο.

sort (?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false)

Το φίλτρο ταξινομεί τα στοιχεία ενός πίνακα ή ενός επαναλήπτη διατηρώντας τα συσχετιστικά κλειδιά τους. Όταν έχει οριστεί μια τοπική γλώσσα, η ταξινόμηση ακολουθεί τους κανόνες της, εκτός αν έχει καθοριστεί μια προσαρμοσμένη συνάρτηση σύγκρισης.

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

Πίνακας ταξινομημένος με αντίστροφη σειρά.

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

Μπορείτε να καθορίσετε μια προσαρμοσμένη συνάρτηση σύγκρισης για την ταξινόμηση (το παράδειγμα δείχνει πώς να αντιστρέψετε την ταξινόμηση από το μεγαλύτερο στο μικρότερο):

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

Το φίλτρο |sort σας επιτρέπει επίσης να ταξινομείτε τα στοιχεία με βάση το κλειδί:

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

Εάν πρέπει να ταξινομήσετε έναν πίνακα με βάση μια συγκεκριμένη στήλη, μπορείτε να χρησιμοποιήσετε την παράμετρο by. Η τιμή 'name' στο παράδειγμα καθορίζει ότι η ταξινόμηση θα γίνει με βάση τις παραμέτρους $row->name ή $row['name'], ανάλογα με το αν το $row είναι πίνακας ή αντικείμενο:

{foreach ($items|sort: by: 'name') as $item}
	{$item->name}
{/foreach}

Μπορείτε επίσης να ορίσετε μια συνάρτηση επανάκλησης που καθορίζει την τιμή με βάση την οποία θα γίνει η ταξινόμηση:

{foreach ($items|sort: by: fn($items) => $items->category->name) as $item}
	{$item->name}
{/foreach}

Η παράμετρος byKey μπορεί να χρησιμοποιηθεί με τον ίδιο τρόπο.

spaceless

Αφαιρεί τα περιττά κενά από την έξοδο. Μπορείτε επίσης να χρησιμοποιήσετε το ψευδώνυμο strip.

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

Εκτυπώνει:

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

stripHtml

Μετατρέπει την HTML σε απλό κείμενο. Δηλαδή, αφαιρεί τις ετικέτες HTML και μετατρέπει τις οντότητες HTML σε κείμενο.

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

Το προκύπτον απλό κείμενο μπορεί φυσικά να περιέχει χαρακτήρες που αντιπροσωπεύουν ετικέτες HTML, για παράδειγμα το '&lt;p&gt;'|stripHtml μετατρέπεται σε <p>. Ποτέ μην εξάγετε το κείμενο που προκύπτει με |noescape, καθώς αυτό μπορεί να οδηγήσει σε ευπάθεια ασφαλείας.

substr (int $offset, ?int $length=null)

Εξάγει μια φέτα μιας συμβολοσειράς. Αυτό το φίλτρο έχει αντικατασταθεί από ένα φίλτρο φέτας.

{$string|substr: 1, 2}

translate (string $message, …$args)

Μεταφράζει εκφράσεις σε άλλες γλώσσες. Για να καταστήσετε το φίλτρο διαθέσιμο, πρέπει να ρυθμίσετε τον μεταφραστή. Μπορείτε επίσης να χρησιμοποιήσετε τις ετικέτες για τη μετάφραση.

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

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

Απογύμνωση αρχικών και τελικών χαρακτήρων, από προεπιλογή κενό διάστημα.

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

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

Συντομεύει μια συμβολοσειρά στο μέγιστο δοσμένο μήκος, αλλά προσπαθεί να διατηρήσει ολόκληρες λέξεις. Αν η συμβολοσειρά είναι κομμένη, προσθέτει ελλειψογράμματα στο τέλος (αυτό μπορεί να αλλάξει με τη δεύτερη παράμετρο).

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

upper

Μετατρέπει μια τιμή σε κεφαλαία γράμματα. Απαιτεί την επέκταση PHP mbstring.

{='latte'|upper}  {* έξοδοι 'LATTE' *}

Βλέπε επίσης capitalize, firstUpper, lower.

webalize

Μετατρέπει σε ASCII.

Μετατρέπει τα κενά σε παύλες. Αφαιρεί χαρακτήρες που δεν είναι αλφαριθμητικοί, υπογράμμιση ή παύλα. Μετατρέπει σε πεζά γράμματα. Αφαιρεί επίσης τα λευκά κενά που προηγούνται και ακολουθούν.

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

Απαιτεί το πακέτο nette/utils.

έκδοση: 3.0