Φίλτρα Latte
Τα φίλτρα είναι συναρτήσεις που αλλάζουν ή μορφοποιούν τα δεδομένα σε μια μορφή που θέλουμε. Αυτή είναι μια περίληψη των ενσωματωμένων φίλτρων που είναι διαθέσιμα.
capitalize |
πεζά γράμματα, το πρώτο γράμμα κάθε λέξης κεφαλαίο |
firstUpper |
κάνει το πρώτο γράμμα κεφαλαίο |
lower |
κάνει μια συμβολοσειρά πεζά |
upper |
κάνει μια συμβολοσειρά κεφαλαίο |
ceil |
στρογγυλοποιεί έναν αριθμό με δεδομένη ακρίβεια |
floor |
στρογγυλοποιεί έναν αριθμό προς τα κάτω με δεδομένη ακρίβεια |
round |
στρογγυλοποιεί έναν αριθμό σε δεδομένη ακρίβεια |
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 *}
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' *}
floor (int $precision=0)
Στρογγυλοποιεί έναν αριθμό με δεδομένη ακρίβεια.
{=3.5|floor} {* έξοδοι 3 *}
{=135.79|floor:1} {* έξοδοι 135.7 *}
{=135.79|floor:3} {* έξοδοι 135.79 *}
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' *}
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 / MMM / MMMM |
8 / 08 / Αυγ / Αυγούστου |
Ημέρα | d / dd / E / EEEE |
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: <b>hello</b>
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&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' *}
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 *}
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 < two</p>'|stripHtml} {* outputs 'one < two' *}
Το προκύπτον απλό κείμενο μπορεί φυσικά να περιέχει χαρακτήρες που
αντιπροσωπεύουν ετικέτες HTML, για παράδειγμα το '<p>'|stripHtml
μετατρέπεται σε <p>
. Ποτέ μην εξάγετε το κείμενο που προκύπτει
με |noescape
, καθώς αυτό μπορεί να οδηγήσει σε ευπάθεια ασφαλείας.
substr (int $offset, ?int $length=null)
Εξάγει μια φέτα μιας συμβολοσειράς. Αυτό το φίλτρο έχει αντικατασταθεί από ένα φίλτρο φέτας.
{$string|substr: 1, 2}
translate (…$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.