![]() | Not: Bu sayfayı düzenlerken katkınızıCC0 altında yayınlamayı kabul edersiniz. Daha fazla bilgi içinKamu Malı Yardım Sayfalarına bakın. | ![]() |
ParserFunctions uzantısı, MediaWiki'de zaten mevcut olan "sihirli kelimeleri" tamamlamak için on bir ekayrıştırıcı işlevi sağlar.(Dize işleme için ek ayrıştırıcı işlevleri sağlamak üzereyapılandırılabilir; bu dize işlevleribaşka yere belgelenmiştir.)Bu uzantı tarafından sağlanan tüm ayrıştırıcı işlevleri şu şekildedir:
{{#işlevadı:değişken 1 |değişken 2 |değişken 3 ... }}
Tür | Operatörler |
---|---|
Gruplama (parantezler) | ( ) |
Sayılar | 1234.5 e (2.718) pi (3.142) |
ikili operatöre tekli+ ,- | |
Tekli | not ceil trunc floor abs exp ln sin cos tan acos asin atan sqrt |
İkili | ^ |
* / div mod fmod | |
+ - | |
Yuvarlama | round |
Mantık | = != <> > < >= <= |
and | |
or |
Bu işlev, matematiksel bir ifadeyi değerlendirir ve hesaplanan değeri döndürür.Bu işlev,mw.ext.ParserFunctions.expr
işlevi aracılığıylaScribunto olarak da kullanılabilir.
{{#expr:ifade }}
Basic example
{{#expr: 1 + 1}}
→2Kullanılabilir operatörler, öncelik sırasına göre sağda listelenir. Her operatörün işleviyle ilgili daha fazla ayrıntı için [[Manual:Expr parser function syntax|Help:Hesaplama]] sayfasına bakın. Döndürülen sonucun doğruluğu ve biçimi, vikiyi çalıştıran sunucunun işletim sistemine ve site dilinin sayı biçimine bağlı olarak değişecektir.The accuracy and format of the result returned will vary depending on the operating system of the server running the wiki and the number format of the site language.
Boole cebri kullanılarak değerlendirme yapılırken, sıfırfalse
olarak değerlendirilir ve pozitif veya negatif herhangi bir sıfır olmayan değertrue
olarak değerlendirilir:
{{#expr: 1 and -1}}
→1{{#expr: 1 and 0}}
→0{{#expr: 1 or -1}}
→1{{#expr: -1 or 0}}
→1{{#expr: 0 or 0}}
→0Boş bir giriş ifadesi boş bir dize döndürür. Geçersiz ifadeler,#iferror
işlevi kullanılarak yakalanabilecek birkaç hata mesajından birini döndürür:
{{#expr:}}
→{{#expr: 1+}}
→Expression error: Missing operand for +.{{#expr: 1 =}}
→Expression error: Missing operand for =.{{#expr: 1 foo 2}}
→Expression error: Unrecognized word "foo".Bir sayıdan önce veya sonra toplama ve çıkarma işlenenlerinin sırası anlamlıdır ve hatalı girdi içeren bir işlenen yerine pozitif veya negatif bir değer olarak kabul edilebilir:
{{#expr: +1}}
→1{{#expr: -1}}
→-1{{#expr: + 1}}
→1{{#expr: - 1}}
→-1Sihirli kelimelerin çıkışını kullanıyorsanız, virgülleri kaldırmak ve sayıları çevirmek için bunları ham formatlamanız gerektiğini unutmayın. Örneğin, $numberofusers, $numberofusers2 kullanılarak elde edilebilecek $nou-result-raw ile istediğimiz yerde $nou-result ile sonuçlanır. Bu, özellikle sayıların çevrildiği bazı dillerde önemlidir. Örneğin, Bengalce'de $numberofusers3, $bengali üretir.For example, {{NUMBEROFUSERS}} results in 18.137.920, where we want 18137920, which can be obtained using{{formatnum:{{NUMBEROFUSERS}}|R}}
.This is especially important in some languages, where numerals are translated.For example, in Bengali, {{NUMBEROFUSERS}} produces ৩০,০৬১.
{{#expr:{{NUMBEROFUSERS}}+100}}
→ 118.137{{#expr:{{formatnum:{{NUMBEROFUSERS}}|R}}+100}}
→18138020![]() | mod operatörü, ikinci bağımsız değişkenin bazı değerleri için yanlış sonuçlar veriyor:
|
Yuvarlaklar soldaki sayıyı bir kuvvete yükseltilmiş 1/10'un katına çıkarır, üs sağda verilen sayının kesik değerine eşittir.
Yukarı veya aşağı yuvarlamak için sırasıyla tekliceil
veyafloor
kullanın.
Test durumu | Sonuç | Yuvarlama yöntemi | ||
---|---|---|---|---|
{{#expr: 1/3 round 5 }} | 0.33333 | Son rakam < 5 olduğundan belirgin bir yuvarlama oluşmaz (0.333333… → 0.33333) | ||
{{#expr: 1/6 round 5 }} | 0.16667 | Son rakam ≥ 5 olduğundan yuvarlanır (0.166666… → 0.16667) | ||
{{#expr: 8.99999/9 round 5 }} | 1 | Yine, sonuç son basamağa yuvarlanır, bu da ek yuvarlama ile sonuçlanır (0.999998… → 1.00000 → 1) | ||
{{#expr: 1234.5678round -2 }} | 1200 | Negatif değerler ondalık noktanın soluna yuvarlandığından en yakın 100'e yuvarlanır | ||
{{#expr: 1234.5678round 2 }} | 1234.57 | Pozitif değerler ondalık noktanın sağına yuvarlandığından en yakın 100'e yuvarlanır | ||
{{#expr: 1234.5678 round 2.3 }} | 1234.57 | Yuvarlama dizinindeki ondalık sayılar, yuvarlanan sonuçta hiçbir fark yaratmaz | ||
{{#expr:trunc 1234.5678 }} | 1234 | Ondalık kısım kesildi (doğranmış) | ||
En yakın tam sayıya yuvarlama | ||||
{{#expr: 1/3round 0 }} | 0 | Sıfır olanen yakın tamsayıya kadar | ||
{{#expr: 1/2round 0 }} | 1 | Bir olan en yakın tamsayıya kadar | ||
{{#expr: 3/4round 0 }} | 1 | Bir olan en yakın tamsayıya kadar | ||
{{#expr: -1/3round 0 }} | -0 | Sıfır olan en yakın tamsayıya kadar | ||
{{#expr: -1/2round 0 }} | -1 | Negatif olan en yakın tam sayıya kadar | ||
{{#expr: -3/4round 0 }} | -1 | Negatif olan en yakın tam sayıya kadar | ||
tavan vezemin ile yukarı veya aşağı yuvarlama | ||||
{{#expr:ceil(1/3) }} | 1 | Bir sonrakidaha büyük tam sayıya kadar | ||
{{#expr:floor(1/3) }} | 0 | Sıfır olan bir sonrakidaha küçük tam sayıya kadar | ||
{{#expr:ceil(-1/3) }} | -0 | Sıfır olan bir sonraki daha büyük tam sayıya kadar | ||
{{#expr:floor(-1/3) }} | -1 | Negatif olan bir sonraki daha küçük tam sayıya kadar | ||
{{#expr:ceil 1/3 }} | 0.33333333333333 | 1 zaten bir tam sayı olduğundan yuvarlanmaz
| ||
Rounding large numbers | ||||
{{#expr: 1e-92 round 400 }} | 1.0E-92 | Rounding to a very large number leads to infinity.Hence, the original value without the infinity is given as the answer. | ||
{{#expr: 1e108 round 200 }} | 1.0E+108 | Same as above. |
İfadeler yalnızca sayı benzeri değerlerle çalışır, dizeleri veya karakterleri karşılaştıramazlar. Bunun yerine#ifeq kullanılabilir.
{{#expr: "a" = "a"}}
→Expression error: Unrecognized punctuation character """.{{#expr: a = a}}
→Expression error: Unrecognized word "a".{{#ifeq: a| a| 1| 0}}
→1Bu işlev, bir test dizesini değerlendirir ve boş olup olmadığını belirler. Yalnızca boşluk içeren bir test dizisi boş olarak kabul edilir.
{{#if: test dizesi| test dizisi boş değilse değer| test dizisi boşsa (veya yalnızca beyaz boşluk) değer}}
{{#if: ilk parametre| ikinci parametre| üçüncü parametre}}
Bu işlev, ilk olarak ilk parametrenin boş olup olmadığını test eder. İlk parametre boş değilse, işlev ikinci bağımsız değişkeni görüntüler. İlk parametre boşsa veya yalnızca boşluk karakterleri (boşluklar, yeni satırlar vb.) içeriyorsa, üçüncü bağımsız değişkeni görüntüler.
{{#if:| yes| no}}
→no{{#if: string| yes| no}}
→yes{{#if: | yes| no}}
→yes{{#if:| yes| no}}
→noTest dizesi her zaman saf metin olarak yorumlanır, bu nedenle matematiksel ifadeler değerlendirilmez (bunun için#ifexpr sayfasına bakın):
{{#if: 1==2| yes| no}}
→yes{{#if: 0| yes| no}}
→yesSon parametre (false) atlanabilir:
{{#if: foo| yes}}
→ yes{{#if:| yes}}
→{{#if: foo|| no}}
→İşlev iç içe olabilir. Bunu yapmak için, #if işlevinin bir parametresi yerine iç #if işlevini tam biçiminde yuvalayın. Yedi seviyeye kadar iç içe yerleştirme mümkündür, ancak bu vikiye veya bir bellek sınırına bağlı olabilir.
{{#if:test dizesi|test dizisi boş değilse değer|{{#if:test string|value if test string is not empty|test dizisi boşsa (veya yalnızca beyaz boşluk) değer}}}}
#if
ifadenizde test dizesi olarak bir parametre de kullanabilirsiniz. Değişken adından sonra|
(boru sembolü) eklediğinizden emin olmanız gerekir.(Böylece parametrenin bir değeri yoksa, "{{{1}}}
" dizesi yerine boş bir dize olarak değerlendirilir.)
{{#if:{{{1|}}}|1 değişkeninde metin girdiniz|1 değişkeninde metin yok}}
Bu ayrıştırıcı işlevine ilişkin daha fazla örnek içinHelp:Şablonlarda ayrıştırıcı işlevler sayfasına bakın.
Bu ayrıştırıcı işlevi, iki giriş dizesini karşılaştırır, özdeş olup olmadıklarını belirler ve sonuca göre iki dizeden birini döndürür.Daha fazla karşılaştırma ve çıkış dizisi gerekiyorsa,#switch
kullanmayı düşünün.
{{#ifeq:string 1 |string 2 |value if identical |value if different }}
Her iki dizi de geçerli sayısal değerlerse, diziler sayısal olarak karşılaştırılır:
{{#ifeq: 01| 1| equal| not equal}}
→equal{{#ifeq: 0| -0| equal| not equal}}
→equal{{#ifeq: 1e3| 1000| equal| not equal}}
→equal{{#ifeq:{{#expr:10^3}}| 1000| equal| not equal}}
→equalAksi hâlde karşılaştırma metin olarak yapılır; bu karşılaştırma büyük/küçük harf duyarlıdır:
{{#ifeq: foo| bar| equal| not equal}}
→not equal{{#ifeq: foo| Foo| equal| not equal}}
→not equal{{#ifeq: "01"| "1"| equal| not equal}}
→not equal (yukarıdaki benzer örnekle tırnak işaretleri olmadan karşılaştırın){{#ifeq: 10^3| 1000| equal| not equal}}
→not equal (yukarıdaki benzer örnekle karşılaştırın, önce#expr
geçerli bir sayı döndürür)Pratik bir örnek olarak, kısa ve uzun olmak üzere iki standart zaman arasında seçim yapmak için ayrıştırıcıyı kullanan mevcut birTemplate:Timer
şablonu düşünün."short" dizesiyle karşılaştırılacak ilk giriş olarak parametreyi alır. Sıralama için bir konvansiyon yoktur, ancak parametre önce giderse okunması daha kolaydır.Şablon kodu şu şekilde tanımlanır:
{{#ifeq:{{{1|}}}| short| 20| 40}}
aşağıdakiler ortaya çıkar:
{{timer|short}}
→20{{timer|20}}
→40{{timer}}
→40![]() | Bir ayrıştırıcı işlevi içinde kullanıldığında, tüm ayrıştırıcı etiketleri ve diğer ayrıştırıcı işlevleri geçici olarakbenzersiz bir kod ile değiştirilmelidir. Bu, karşılaştırmaları etkiler:
|
![]() | Site yapılandırmasına bağlı olaraksayfa-adı sihirli kelimeler ile birebir karşılaştırmalar başarısız olabilir. Örneğin, vikiye bağlı olarak {{FULLPAGENAME}}, ilk harfi büyük yazabilir ve tüm alt çizgileri boşluklarla değiştirir. Bu sorunu çözmek için sihirli kelimesini her iki parametreye de uygulayın:
|
Bu işlev bir giriş dizesi alır ve iki sonuçtan birini döndürür; giriş dizesi,#expr
,#time
ve#rel2abs
gibi diğer ayrıştırıcı işlevler tarafından oluşturulan $hatalı bir HTML nesnesi içeriyorsa, döngüler ve özyinelemeler gibişablon hataları varsa, işlevtrue
olarak değerlendirilir, ve diğer "failsoft" ayrıştırıcı hataları.
{{#iferror:test string |value if error |value if correct }}
Dönüş dizelerinden biri veya her ikisi atlanabilir.correct
dizesi atlanırsa, hatalı değilsetest string
döndürülür.error
dizesi de atlanırsa, bir hata durumunda boş bir dize döndürülür:
{{#iferror:{{#expr: 1 + 2}}| error| correct}}
→correct{{#iferror:{{#expr: 1 + X}}| error| correct}}
→error{{#iferror:{{#expr: 1 + 2}}| error}}
→3{{#iferror:{{#expr: 1 + X}}| error}}
→error{{#iferror:{{#expr: 1 + 2}}}}
→3{{#iferror:{{#expr: 1 + X}}}}
→{{#iferror:{{#expr: .}}| error| correct}}
→correct{{#iferror:<strongclass="error">a</strong>| error| correct}}
→errorSome errors may cause a tracking category to be added, using{{#iferror:}}
will not suppress the addition of the category.
Bu işlev, matematiksel bir ifadeyi değerlendirir ve sonucun boole değerine bağlı olarak iki dizeden birini döndürür:
{{#ifexpr:expression |value if true |value if false }}
expression
girişi tam olarak yukarıdaki#expr
için olduğu gibi değerlendirilir ve aynı operatörler kullanılabilir. Çıkış daha sonra bir boole ifadesi olarak değerlendirilir.
Boş bir giriş ifadesifalse
olarak değerlendirilir:
{{#ifexpr:| yes| no}}
→noYukarıda bahsedildiği gibi, sıfırfalse
olarak değerlendirilir ve sıfır olmayan herhangi bir değertrue
olarak değerlendirilir, bu nedenle bu işlev yalnızca#ifeq
ve#expr
kullanan bir işleve eşdeğerdir:
{{#ifeq: {{#expr:expression }} | 0 |value if false |value if true }}
boş veya yanlış bir giriş ifadesi dışında (bir hata mesajı boş bir dize olarak değerlendirilir; sıfıra eşit değildir, bu nedenlevalue if true
alırız).
{{#ifexpr: =| yes| no}}
→Expression error: Unexpected = operator.karşılama
{{#ifeq:{{#expr: =}}| 0| no| yes}}
→ yesDönüş değerlerinden biri veya her ikisi atlanabilir; uygun dal boş bırakıldığında çıkış verilmez:
{{#ifexpr: 1 > 0| yes}}
→yes{{#ifexpr: 1 < 0| yes}}
→{{#ifexpr: 0 = 0| yes}}
→ yes{{#ifexpr: 1 > 0|| no}}
→{{#ifexpr: 1 < 0|| no}}
→ no{{#ifexpr: 1 > 0}}
→Boolean operators of equality or inequality operators are supported.
{{#ifexpr: 0 = 0 or 1 = 0| yes}}
→yes{{#ifexpr: 0 = 0 and 1 = 0|| no}}
→no{{#ifexpr: 2 > 0 or 1 < 0| yes}}
→yes{{#ifexpr: 2 > 0 and 1 > 0| yes| no}}
→yes![]() | #ifexpr ile sayısal karşılaştırmaların sonuçları her zaman#ifeq ve#switch sonuçlarıyla eşleşmez. Bu son ikisi#ifexpr değerden daha doğrudur ve eşdeğer sonuçlar döndürmez.Değiştirilen son rakamla bu karşılaştırmayı düşünün:
Farklı rakamla, eşittir sonucu aslında yanlıştır. #ifexpr değerindeki bu davranış, MediaWiki'nin ifadelerdeki değişmez sayıları, bunun gibi büyük tamsayılar için yuvarlamayı içeren float türüne dönüştürmesinden kaynaklanır. |
Bu işlev bir giriş dizesi alır, onu sayfa başlığı olarak yorumlar ve sayfanın yerel vikide bulunup bulunmadığına bağlı olarak iki değerden birini döndürür.
{{#ifexist:page title |value if exists |value if doesn't exist }}
Sayfa mevcutsa, içerik barındırıyorsa, görünür şekilde boşsa (kategori bağlantıları veyasihirli kelimeler gibi meta veriler içeriyorsa, ancak görünür bir içerik sayfası yoksa işlevtrue
olarak değerlendirir.), boş veya biryönlendirme değerlendirilir. Sayfanın önceden var olduğu ancak silindiği de dahil olmak üzere, yalnızca kırmızı bağlantı verilen sayfalarfalse
olarak değerlendirilir.
{{#ifexist: Help:Extension:ParserFunctions/tr | exists | doesn't exist }}
→exists{{#ifexist: XXHelp:Extension:ParserFunctions/trXX | exists | doesn't exist }}
→doesn't existİşlev, özelleştirilmişsistem mesajları ve yazılım tarafından tanımlananözel sayfalar içintrue
olarak değerlendirilir.
{{#ifexist: Special:Watchlist | exists | doesn't exist }}
→exists{{#ifexist: Special:CheckUser | exists | doesn't exist }}
→exists (çünkü bu vikideCheckuser uzantısı yüklüdür){{#ifexist: MediaWiki:Copyright | exists | doesn't exist }}
→doesn't exist (çünküMediaWiki:Copyright özelleştirilmedi)Bir sayfa#ifexist:
kullanarak bir hedefi kontrol ederse, o sayfa hedef sayfanınSpecial:WhatLinksHere listesinde görünür. Dolayısıyla, $code1:Foo $code2 kodu bu sayfaya ($fullpagename1) canlı olarak dahil edildiyse,$wth/Foo $fullpagename2 sayfasını listeleyecektir.So if the code{{#ifexist:Foo }}
were included live on this page (Help:Extension:ParserFunctions/tr),Special:WhatLinksHere/Foo will list Help:Extension:ParserFunctions/tr.
Paylaşılan bir medya deposu kullanan wikilerde, bir dosyanın depoya yüklenip yüklenmediğini kontrol etmek için#ifexist:
kullanılabilir, ancak vikinin kendisine yüklenmez:
{{#ifexist: File:Example.png | exists | doesn't exist }}
→doesn't exist{{#ifexist: Image:Example.png | exists | doesn't exist }}
→doesn't exist{{#ifexist: Media:Example.png | exists | doesn't exist }}
→existsDosya için yerel bir açıklama sayfası oluşturulmuşsa, yukarıdakilerin tümü için sonuçvar olur.
#ifexist:
vikiarası bağlantıları ile çalışmaz.
#ifexist:
, "zengin bir ayrıştırıcı işlevi" olarak kabul edilir; herhangi bir sayfaya yalnızca sınırlı sayıda dahil edilebilir (yansıtılmış şablonların içindeki işlevler dahil).Bu sınır aşıldığında, hedef sayfanın var olup olmadığına bakılmaksızın diğer#ifexist:
işlevleri otomatik olarak false döndürür ve sayfaCategory:Pages with too many expensive parser function calls olarak sınıflandırılır.İzleme kategorisi adı vikinizin içerik diline göre değişebilir.
Bazı kullanım durumlarında,a.new
(var olmayan sayfalara bağlantılar seçmek için) veyaa:not(.new)
(mevcut sayfalara bağlantı seçmek için) seçicilerini kullanarak CSS ile ifexist efektini taklit etmek mümkündür.Ayrıca, tek bir sayfada kullanılabilecek pahalı ayrıştırıcı işlevlerin sayısı$wgExpensiveParserFunctionLimit
ile kontrol edildiğinden, gerekirse LocalSettings.php içindeki sınırı da arttırılabilir.
Mevcut olmayan ve #ifexist kullanımı için test edilen bir sayfaİstenen Sayfalar'da yer alacaktır.Nedeni içinT14019 ve bir geçici çözüm içinw:Template:Linkless exists sayfasına bakın.
Bu işlev, göreli bir dosya yolunu mutlak bir dosya yoluna dönüştürür.
{{#rel2abs:path }}
{{#rel2abs:path |base path }}
path
girişi içinde aşağıdaki sözdizimi geçerlidir:
.
→ mevcut düzey..
→ bir düzey yukarı çıkın/foo
→ /foo alt dizinine bir düzey aşağı ininbase path
belirtilmezse, bunun yerine sayfanın tam sayfa adı kullanılacaktır:
{{#rel2abs: /quok | Help:Foo/bar/baz }}
→Help:Foo/bar/baz/quok{{#rel2abs: ./quok | Help:Foo/bar/baz }}
→Help:Foo/bar/baz/quok{{#rel2abs: ../quok | Help:Foo/bar/baz }}
→Help:Foo/bar/quok{{#rel2abs: ../. | Help:Foo/bar/baz }}
→Help:Foo/bar/.
veya/./
gibi geçersiz sözdizimi yoksayılır.İkiden fazla ardışık nokta izin verilmediğinden, ardışık ifadeleri ayırmak için aşağıdaki gibi diziler kullanılabilir:
{{#rel2abs: ../quok/. | Help:Foo/bar/baz }}
→Help:Foo/bar/quok{{#rel2abs: ../../quok | Help:Foo/bar/baz }}
→Help:Foo/quok{{#rel2abs: ../../../quok | Help:Foo/bar/baz }}
→quok{{#rel2abs: ../../../../quok | Help:Foo/bar/baz }}
→Hata: Yolda geçersiz derinlik: "Help:Foo/bar/baz/../../../../quok" (kök düğümünün üstünde bir düğüme erişmeye çalıştı)For a similar group of functions see alsoHelp:Magic words#URL data.Built-in parser functions include: 'localurl:', 'fullurl:', 'anchorencode:' etc.
Ayrıca bakınız:w:Help:Switch parser function
Bu işlev, bir giriş değerini birkaç test durumuyla karşılaştırır ve bir eşleşme bulunursa ilişkili bir dize döndürür.
{{#switch:comparison string |case =result |case =result |... |case =result |default result}}
Örnekler:
{{#switch: baz| foo= Foo| baz= Baz| Bar}}
→ Baz{{#switch: foo| foo= Foo| baz= Baz| Bar}}
→ Foo{{#switch: zzz| foo= Foo| baz= Baz| Bar}}
→ BarKısmi yansıtma etiketli #switch, şablon kodlamasına aşina olmayan bir düzenleyicinin yapılandırılabilir ögeleri görüntülemesini ve düzenlemesini sağlayan bir yapılandırma dosyasını etkileyebilir.
case
dizesikarşılaştırma dizesi
ile eşleşmezse,varsayılan sonuç
döndürülür:
{{#switch: test| foo= Foo| baz= Baz| Bar}}
→ BarBu sözdiziminde, varsayılan sonuç son parametre olmalı ve ham eşittir işareti içermemelidir ({{}}
olmadan bir eşittir işareti).Varsa, büyük/küçük harf karşılaştırması olarak kabul edilecek ve hiçbir vaka eşleşmediyse hiçbir metin görüntülenmeyecektir.Bunun nedeni, varsayılan değerin tanımlanmamış olmasıdır (boş).Ancak bir durum eşleşirse, ilişkili dizesi döndürülür.
{{#switch: test| Bar| foo= Foo| baz= Baz}}
→{{#switch: test| foo= Foo| baz= Baz| B=ar}}
→{{#switch: test| test= Foo| baz= Baz| B=ar}}
→ FooAlternatif olarak, varsayılan sonuç, bircase
"#default
" dizesiyle açıkça bildirilebilir.
{{#switch:comparison string |case =result |case =result |... |case =result | #default =default result}}
Bu şekilde bildirilen varsayılan sonuçlar, işlev içinde herhangi bir yere yerleştirilebilir:
{{#switch: test| foo= Foo| #default= Bar| baz= Baz}}
→ Bardefault
parametresi atlanırsa ve eşleşme olmazsa, hiçbirsonuç
döndürülmez:
{{#switch: test| foo= Foo| baz= Baz}}
→Birkaçcase
dizgisinin aynısonuç
dizgisini döndürdüğü 'geçiş' değerlerine sahip olmak mümkündür. Bu, çoğaltmayı en aza indirir.
{{#switch:comparison string |case1 =result1 |case2 |case3 |case4 =result234 |case5 =result5 |case6 |case7 =result67 | #default =default result}}
Burada 2, 3 ve 4 numaralı durumların tümüresult234
döndürür; durum 6 ve 7'nin her ikisi deresult67
döndürür.Yukarıdaki durumda son parametredeki "#default =
" atlanabilir.
İşlev, test dizesi olarak parametrelerle birlikte kullanılabilir.Bu durumda, boruyu parametre adından sonra yerleştirmek gerekli değildir, çünkü "{{{parameter name}}}
" dizesi olarak bir büyük/küçük harf ayarlamayı seçmeniz pek olası değildir.(Bu, boru yoksa ve parametre yoksa veya bir değere sahipse parametrenin varsayılan olarak alacağı değerdir.Help:Şablonlarda ayrıştırıcı işlevler sayfasına bakın.)
{{#switch:{{{1}}}| foo= Foo| baz= Baz| Bar}}
Yukarıdaki durumda,{{{1}}}
,foo
ile eşitse, işlevFoo
döndürür.baz
ile eşitse, işlevBaz
döndürür.Parametre boşsa veya mevcut değilse, işlevBar
döndürür.
Yukarıdaki bölümde olduğu gibi, durumlar tek bir sonuç verecek şekilde birleştirilebilir.
{{#switch:{{{1}}}| foo| zoo| roo= Foo| baz= Baz| Bar}}
Burada{{{1}}}
,foo
,zoo
veyaroo
ile eşitse, işlevFoo
döndürür.baz
ile eşitse, işlevBaz
döndürür.Parametre boşsa veya mevcut değilse, işlevBar
döndürür.
Ek olarak, test parametre değeri herhangi bir durumla eşleşmezse hiçbir şey döndürmek istemiyorsanız varsayılan sonuç atlanabilir.
{{#switch:{{{1}}}| foo= Foo| bar= Bar}}
Bu durumda, işlev,{{{1}}}
mevcut olmadığı vefoo
veyabar
ile eşit olmadığı sürece boş bir dize döndürür; bu durumda sırasıylaFoo
veyaBar
döndürür.
Bu, varsayılan sonucu boş olarak bildirmekle aynı etkiye sahiptir.
{{#switch:{{{1}}}| foo| zoo| roo= Foo| baz= Baz|}}
Herhangi bir nedenle bir durumu "{{{parameter name}}}
" olarak ayarlamaya karar verirseniz, parametre olmadığında veya bir değeri olmadığında işlev bu durumun sonucunu döndürür.İşlevin varsayılan sonucunu döndürmek için parametrenin var olması ve "{{{parameter name}}}
" dizesinden başka bir değere sahip olması gerekir.
{{{1}}}
olmadığında veya boş olduğunda):{{#switch:{{{1}}}|{{{1}}} = Foo| baz= Baz| Bar}}
→ Foo{{{1}}}
"test
" değerine sahip olduğunda):{{#switch:{{{1}}}|{{{1}}} = Foo| baz= Baz| Bar}}
→ Bar{{{1}}}
, "{{{1}}}
" değerine sahip olduğunda):{{#switch:{{{1}}}|{{{1}}} = Foo| baz= Baz| Bar}}
→ FooBu varsayımsal durumda, boruyu ({{{1|}}}
) parametresine eklemeniz gerekir.
#ifeq
ile olduğu gibi, karşılaştırma dizesi ve test edilen durum dizisinin her ikisi de sayısal ise karşılaştırma sayısal olarak yapılır; veya aksi takdirde büyük/küçük harfe duyarlı bir dize olarak:
{{#switch: 0 + 1| 1= one| 2= two| three}}
→three{{#switch:{{#expr: 0 + 1}}| 1= one| 2= two| three}}
→one{{#switch: 02| +1= one| +2= two| three}}
→two{{#switch: 100| 1e1= ten| 1e2= hundred| other}}
→hundred{{#switch: a| a= A| b= B| C}}
→A{{#switch: A| a= A| b= B| C}}
→CBircase
dizesi boş olabilir:
{{#switch:|= Nothing| foo= Foo| Something}}
→NothingBir eşleşme bulunduğunda, sonrakicases
yoksayılır:
{{#switch: b| f= Foo| b= Bar| b= Baz|}}
→Bar![]() | #switch ve#ifeq ile yapılan sayısal karşılaştırmalar, ifadelerdeki karşılaştırmalara eşdeğer değildir (yukarıya da bakın):
|
"Case" dizeleri ham eşittir işaretleri içeremez. Bu sorunu çözmek için, tek bir eşittir işareti içeren bir $tpl şablonu oluşturun: $code1 veya eşittir işaretini HTML kodu=
ile değiştirin.
Örnek:
Yazdığın | Yaptığın |
---|---|
{{#switch: 1=2| 1=2 = raw| 1<nowiki>=</nowiki>2 = nowiki| 1{{=}}2 = template| default}} | template |
{{#switch: 1=2| 1=2= html| default}} | html |
#switch
,genişleme derinliğini azaltmak için kullanılabilir.
Örneğin:
{{#switch:{{{1}}}|condition1=branch1|condition2=branch2|condition3=branch3|branch4}}
eşdeğerdir
{{#ifeq:{{{1}}}|condition1|branch1|{{#ifeq:{{{1}}}|condition2|branch2|{{#ifeq:{{{1}}}|condition3|branch3|branch4}}}}}}
yani derin yuvalama, doğrusal:
{{#ifeq:{{{1}}}|condition1|<!--then-->branch1|<!--else-->{{#ifeq:{{{1}}}|condition2|<!--then-->branch2|<!--else-->{{#ifeq:{{{1}}}|condition3|<!--then-->branch3|<!--else-->branch4}}}}}}
Öte yandan, anahtarın değiştirilmesi, her iki dalda iç içe geçmiş IF'ler için karmaşık/pratik olabilir (girinti alternatifleriyle gösterilir, her iki tarafta girintili), tam simetrik ağaç yapar:
{{#ifeq:{{{1}}}|condition1|<!--then-->branch1t{{#ifeq:{{{1}}}|condition2|<!--then-->branch1t2t{{#ifeq:{{{1}}}|condition4|<!--then-->branch1t2t4t|<!--else-->branch1t2t4e}}|<!--else-->branch1t2e{{#ifeq:{{{1}}}|condition5|<!--then-->branch1t2e5t|<!--else-->branch1t2e5e}}}}|<!--else-->branch1e{{#ifeq:{{{1}}}|condition3|<!--then-->branch1e3t{{#ifeq:{{{1}}}|condition6|branch1e3t6t|branch1e3t6e}}|<!--else-->branch1e3e{{#ifeq:{{{1}}}|condition7|branch1e3e7t|branch1e3e7t}}}}}}
Kod | Açıklama | Mevcut çıkış (Güncellemek için bu sayfanın önbelleğini temizleyin) |
---|---|---|
Yıl | ||
Y | 4 haneli yıl. | 2025 |
y | 2 haneli yıl. | 25 |
L | Artık yıl ise 1, değilse 0. | 0 |
o [note 1] | Belirtilen haftanın ISO-8601 yılı.[note 2] | 2025[note 3] |
Ay | ||
n | Ay indeksi, sıfır dolgulu değil. | 7 |
m | Ay indeksi, sıfır dolgulu. | 07 |
M | Site dilinde ay adının kısaltması. | Tem |
F | Site dilinde tam ay adı. | Temmuz |
xg | Tam ay adınıgenitif formunda, tam veyalın formları arasında ayrım yapan site dilleri için çıkış alın. Bu seçenek, Lehçe, Rusça, Beyaz Rusça, Çekçe, Slovakça, Slovence, Ukraynaca vb. gibi birçokSlav dilleri için kullanışlıdır. | Lehçe için:{{#time:F Y|June 2010|pl}} → czerwiec 2010(yalın) {{#time:d xg Y|20 June 2010|pl}} → 20 czerwca 2010(genitif) |
Ayın veya yılın günü | ||
j | Ayın günü, sıfır dolgulu değil. | 18 |
d | Ayın günü, sıfır dolgulu. | 18 |
z | Yılın günü (Ocak 1 = 0).![]() | 198 |
Hafta ve haftanın günü | ||
W | ISO 8601 hafta numarası, sıfır dolgulu. | 29 |
N | ISO 8601 haftanın günü (Pazartesi = 1, Pazar = 7). | 5 |
w | Haftanın gün sayısı (Pazar = 0, Cumartesi = 6). | 5 |
D | Haftanın gününün kısaltması. Nadiren uluslararasılaştırılmış. | Cum |
l | Tam hafta içi adı. Nadiren uluslararasılaştırılmış. | Cuma |
Saat | ||
a | sabahları "am" (00:00:00 → 11:59:59), aksi takdirde "pm" (12:00:00 → 23:59:59). | pm |
A | Yukarıdakia ifadesinin büyük harfli versiyonu. | PM |
g | 12 saat biçiminde saat, sıfır dolgulu değil. | 7 |
h | 12 saat biçiminde saat, sıfır dolgulu. | 07 |
G | 24 saat biçiminde saat, sıfır dolgulu değil. | 19 |
H | 24 saat biçiminde saat, sıfır dolgulu. | 19 |
Dakika ve saniye | ||
i | Dakikalar geçti, sıfır dolgulu. | 22 |
s | Dakikayı saniyeler geçti, sıfır dolgulu. | 31 |
U | Unix zaman. 1 Ocak 1970 00:00:00 GMT'den bu yana saniyeler. | 1752866551 |
Saat dilimi (1.22wmf2 itibarıyla) | ||
e | Saat dilimi tanımlayıcısı. | UTC |
I | Tarihin gün ışığından yararlanma saatinde olup olmadığı. | 0 |
O | Greenwich saati (GMT) farkı | +0000 |
P | İki nokta üst üste ile Greenwich saatine (GMT) göre fark | +00:00 |
T | Saat dilimi kısaltması. | UTC |
Z | Saniye cinsinden zaman dilimi farkı. | 0 |
Çeşitli | ||
t | Geçerli aydaki gün sayısı. | 31 |
c | ISO 8601 formatlı tarih,Y-m-d"T"H:i:s+00:00 ile eşdeğer. | 2025-07-18T19:22:31+00:00 |
r | RFC 5322 biçimlendirilmiş tarih,D, j M Y H:i:s +0000 ile eşdeğer, hafta içi gün adı ve ay adı uluslararasılaştırılmamış. | Fri, 18 Jul 2025 19:22:31 +0000 |
Gregoryen olmayan takvimler | ||
İslami | ||
xmj | Ayın günü. | 22 |
xmF | Tam ay adı. | Muharrem |
xmn | Ay indeksi. | 1 |
xmY | Tam yıl. | 1447 |
İran (Celili) | ||
xit | Aydaki gün sayısı. | 31 |
xiz | Yılın günü. | 119 |
xij | Ayın günü. | 27 |
xiF | Tam ay adı. | Tir |
xin | Ay indeksi. | 4 |
xiY | Tam yıl. | 1404 |
xiy | 2 haneli yıl. | 04 |
İbrani | ||
xjj | Ayın günü. | 22 |
xjF | Tam ay adı. | Tamuz |
xjt | Aydaki gün sayısı. | 29 |
xjx | Ay adının genel biçimi. | Tamuz |
xjn | Ay numarası. | 10 |
xjY | Tam yıl. | 5785 |
Tay güneşi | ||
xkY | Tayland güneş takviminde tam yıl.![]() | 2568 |
Minguo/Juche yılı | ||
xoY | Tam yıl. | 114 |
Japon nengosu | ||
xtY | Tam yıl. | 令和7 |
İşaretler | ||
xn | Sonraki sayısal kodu ham ASCII numarası olarak biçimlendirin. | Hintçe dilinde{{#time:H, xnH}} , ०६, 06 üretir. |
xN | xn gibi, ancak dizenin sonuna veya dizedexN ögesinin bir sonraki görünümüne kadar süren, geçişli bir işaret olarak. | |
xr | Sonraki sayıyı romen rakamı olarak biçimlendirin. Yalnızca 10.000'e kadar olan sayılar için çalışır (MediaWiki 1.20 öncesi sürümde 3.000'e kadar). | {{#time:xrY}} → MMXXV |
xh | Sonraki numarayı bir İbrani rakamı olarak biçimlendirin. | {{#time:xhY}} → ב'כ"ה |
Bu ayrıştırıcı işlevi bir tarih ve/veya saat (Miladi takvimde) alır ve verilen sözdizimine göre biçimlendirir. Bir tarih/saat nesnesi belirtilebilir; varsayılan değersihirli kelime{{CURRENTTIMESTAMP}}
– diğer bir deyişle, sayfanın en son HTML'ye dönüştürüldüğü zaman.
{{#time:format string }}
{{#time:format string |date/time object }}
{{#time:format string |date/time object |language code }}
{{#time:format string |date/time object |language code |local }}
Kabul edilen biçimlendirme kodlarının listesi sağdaki tabloda verilmiştir.Biçimlendirme dizesindeki tanınmayan herhangi bir karakter değiştirilmeden geçirilir; bu aynı zamanda boşluklar için de geçerlidir (sistemin kodları yorumlamak için bunlara ihtiyacı yoktur).If no character is recognized in the formatting string, and the date/time object is without error, then the formatting string is returned as output.Biçimlendirme dizesindeki karakterlerden kaçmanın da iki yolu vardır:
Ek olarak,xx
digrafı tek bir değişmez "x" olarak yorumlanır.
Biçimlendirme kodları listesi gelişmeye devam ettikçe (yeni takvimlerin veya farklı şekilde hesaplanan ve biçimlendirilen yeni tarih alanlarının desteğiyle), iletilmesi gereken tüm değişmez karakterlerden (yalnızca şu anda biçimlendirme kodlarında kullanılan ASCII harflerini değil) kaçınmalısınız.
Ne yazık ki, şimdilik, ASCII tek tırnak işareti, hâlihazırda desteklenen ASCII çift tırnak işaretine değişmez metni işaretlemek için basit bir alternatif olarak ve ters eğik çizgiler (JSON, C, C++, PHP, JavaScript, Lua dahil olmak üzere birçok dil tarafından kullanılan dize sabitlerinde de kaçılması gerekir) tanınmamaktadır (örneğin, JSON, C, C++... içinde dize değerlerinin sınırlandırılması gibi diğer kullanımlar için çift tırnak zorunludur).Dolayısıyla, herhangi bir çifte alıntıyı ters eğik çizgi ile çıkarmadan gömemezsiniz (veya bunun yerine başka kıvırcık, açısal veya kare tırnak işaretleri kullanabilirsiniz).
{{#time: Y-m-d}}
→2025-07-18{{#time:[[Y]] m d}}
→2025 07 18{{#time:[[Y (year)]]}}
→2025 (25UTCpmFri, 18 Jul 2025 19:22:31 +0000){{#time:[[Y "(year)"]]}}
→2025 (year){{#time: i's"}}
→22'31"tarih/zaman nesnesi
PHP'ninstrtotime() işlevi tarafından kabul edilen herhangi bir biçimde olabilir.Mutlak (ör.20 December 2000
), göreli (ör.+20 hours
) ve birleşik zamanlar (ör.30 July +1 year
) kabul edilir.
{{#time: r|now}}
→Fri, 18 Jul 2025 19:22:32 +0000{{#time: r|+2 hours}}
→Fri, 18 Jul 2025 21:22:32 +0000{{#time: r|now + 2 hours}}
→Fri, 18 Jul 2025 21:22:32 +0000{{#time: r|20 December 2000}}
→Wed, 20 Dec 2000 00:00:00 +0000{{#time: r|December 20, 2000}}
→Wed, 20 Dec 2000 00:00:00 +0000{{#time: r|2000-12-20}}
→Wed, 20 Dec 2000 00:00:00 +0000{{#time: r|2000 December 20}}
→Hata: Geçersiz saat.{{#time: r|last tuesday}}
→Tue, 15 Jul 2025 00:00:00 +0000ISO 639-3 (?) içindekidil kodu
, dizenin seçilen dilde görüntülenmesini sağlar
{{#time:d F Y|1988-02-28|nl}}
→28 februari 1988{{#time:l|now|uk}}
→п'ятниця{{#time:d xg Y|20 June 2010|pl}}
→20 czerwca 2010local
parametresi,tarih/saat nesnesinin yerel saat dilimine mi yoksa UTC'ye mi atıfta bulunduğunu belirtir.
Bu bir boole parametresidir: değeri, bağımsız değişkenin değeri kullanılarak belirlenir (dizenin boole değerlerine nasıl dönüştürüldüğüne ilişkin ayrıntılar içinresmi PHP belgelerine bakın).
$wgLocaltimezone
değişkeniUTC
olarak ayarlanırsa,local
,true
veyafalse
olarak ayarlandığında çıktıda hiçbir fark olmadığını unutmayın.Ayrıntılar için aşağıdaki örneklere bakın:
{{#time: Y F d H:i:s|now|it|0}}
→2025 luglio 18 19:22:32{{#time: Y F d H:i:s|now|it|1}}
→2025 luglio 18 19:22:32{{#time: Y F d H:i:s|+2 hours||0}}
→2025 Temmuz 18 21:22:32{{#time: Y F d H:i:s|+2 hours||1}}
→2025 Temmuz 18 21:22:32{{#time:c|2019-05-16T17:05:43+02:00|it}}
→2019-05-16T15:05:43+00:00{{#time:c|2019-05-16T17:05:43+02:00|it|0}}
→2019-05-16T15:05:43+00:00{{#time:c|2019-05-16T17:05:43+02:00|it|true}}
→2019-05-16T15:05:43+00:00Bir Unix zaman damgası hesapladıysanız, onu önceden bir@
sembolü ekleyerek tarih hesaplamalarında kullanabilirsiniz.
{{#time: U| now}}
→1752866552{{#time: r | @1752866551 }}
→Fri, 18 Jul 2025 19:22:31 +0000![]() | Sayısal zaman damgası değerlerinden önce
|
![]() | Kabul edilebilir giriş aralığı 1 Ocak 0111 → 31 Aralık 9999'dur. 100 ile 110 yılları için çıktı tutarsızdır, Y ve artık yıllar 100-110 yılları gibidir, r, D, l ve U bu yılları şu şekilde 2000-2010 yorumlamak gibidir.
0-99 arasındaki yıl sayıları 2000-2069 ve 1970-1999 olarak yorumlanır, ancak başta sıfırlar ile 4 basamaklı biçimde yazıldığında:
|
Tam veya kısmi mutlak tarihler belirtilebilir; işlev,geçerli değerler kullanılarak belirtilmeyen tarihin bölümlerini "doldurur":
{{#time: Y| January 1}}
→2025![]() | Doldurma özelliği tutarlı değil; bazı kısımlar mevcut değerler kullanılarak doldurulur, diğerleri doldurulmaz:
Doldurulan günün istisna durumu var:
|
Dört basamaklı bir sayı her zaman bir yıl olarak yorumlanır, asla saat ve dakika olarak yorumlanmaz:[1]
{{#time: Y m d H:i:s| 1959}}
→1959 07 18 00:00:00Altı basamaklı bir sayı, mümkünse saat, dakika ve saniye olarak yorumlanır, ancak aksi takdirde bir hata olarak yorumlanır (örneğin, bir yıl ve ay değil):
{{#time: Y m d H:i:s| 195909}}
→2025 07 18 19:59:09 Giriş, yıl+ay kodu yerine zaman olarak değerlendirilir.{{#time: Y m d H:i:s| 196009}}
→Hata: Geçersiz saat. 19:60:09 geçerli bir zaman olmasa da 196009, Eylül 1960 olarak yorumlanmaz.İşlev, belirli bir miktarda tarih matematiği gerçekleştirir:
{{#time: d F Y| January 0 2008}}
→31 Aralık 2007{{#time: d F| January 32}}
→Hata: Geçersiz saat.{{#time: d F| February 29 2008}}
→29 Şubat{{#time: d F| February 29 2007}}
→01 Mart{{#time:Y-F|now -1 months}}
→2025-Haziran#time
çağrılarının biçim dizelerinin toplam uzunluğu 6000 karakterle sınırlıdır.[2]
Bu #time ayrıştırıcı işlevinde (daha özel olarakPHP DateTime içinde), göreli zaman dilimi ofsetleri olaraktamsayı olmayan ögelerin iletilmesine izin vermeyen bir hata var. Bu sorun, EDT gibi bir saat dilimi kullanıldığında geçerli değildir. Örneğin:
{{#time:g:i A| -4 hours}}
→ 3:22 PMAncak Hindistan, UTC'den +5.5 saatlik bir zaman farkı üzerindedir ve bu nedenle kendi saat dilimini kullanmak, normal olarak göreli bir zaman dilimi farkının doğru hesaplanmasına izin vermez. İşte olanlar:
{{#time:g:i A| +5.5 hours}}
→ 7:22 PMBu soruna geçici bir çözüm bulmak için, zamanı şu şekilde dakikalara veya saniyelere dönüştürmeniz yeterlidir:
{{#time:g:i A| +330 minutes}}
→ 12:52 AM{{#time:g:i A| +19800 seconds}}
→ 12:52 AM(Bu işlevin geliştiricisi Tim Starling, bu çözüm için tam sözdizimini sağladı.)
Sometimes it is useful to construct a timestamp, which looks like the automatic timestamp generated bysignatures in discussions on talk pages.On an English-language wiki, it can be created with:
{{#timel:H:i, j xg Y (e)|+330 minutes}}
→ 00:52, 19 Temmuz 2025 (UTC)Bu işlev,local
parametresitrue
olarak ayarlandığında{{#time: ... }}
ile aynıdır, bu nedenle her zaman vikinin yerel saatini kullanır ($wgLocaltimezone içinde ayarlandığı gibi).
İşlevin sözdizimi şöyledir:
{{#timel:format string }}
{{#timel:format string |date/time object }}
{{#timel:format string |date/time object |language code }}
$wgLocaltimezone
değişkeniUTC
olarak ayarlanırsa,local
,true
veyafalse
olarak ayarlandığında çıktıda hiçbir fark olmadığını unutmayınÖrneğin, aşağıdaki örneklere bakın:
{{#time:c|now|it}}
→2025-07-18T19:22:32+00:00{{#time:c|now|it|0}}
→2025-07-18T19:22:32+00:00{{#time:c|now|it|1}}
→2025-07-18T19:22:32+00:00{{#timel:c|now|it}}
→2025-07-18T19:22:32+00:00![]() | U'nun hem zaman hem de zaman dilimi için 1970-01-01 00:00:00 UTC'den farklı zaman dilimlerine sahip Vikipedi'lerde UTC'den (önceden GMT olarak biliniyordu) aynı sayıda saniye döndüreceğini unutmayın.
|
This function formats a date using a standard format for the selected language, as defined in$dateFormats
(seeT223772).
{{#timef:date/time object }}
{{#timef:date/time object |format type }}
{{#timef:date/time object |format type |language code }}
The format of thedate/time object is the same as for#time. If it is empty, the time when the page was rendered is used.
Theformat type may be one of:
time
date
both
pretty
If theformat type is not specified, both the time and date will be show, as ifboth
were specified.
If thelanguage code is not specified, the page's content language is used.
Using#timef
instead of#time
allows templates to more easily support multiple languages, since different languages have different ways to format dates.
In English, the order of the day and month is controlled by$wgAmericanDates
.
Examples:
{{#timef:now|both|en}}
→ 19:22, 18 July 2025{{#timef:now|both|ja}}
→ 2025年7月18日 (金) 19:22{{#timef:now|pretty|en}}
→ 18 July{{#timef:now|pretty|pl}}
→ 18 lipca{{#timef:|time}}
→ 19.22This function is the same as#timef except that it uses the local timezone of the wiki as configured in$wgLocaltimezone.
{{#timefl:date/time object }}
{{#timefl:date/time object |format type }}
{{#timefl:date/time object |format type |language code }}
Bu işlev, bir sayfa başlığını eğik çizgilere göre bölümlere ayırır ve ardından bu bölümlerden bazılarını çıkış olarak döndürür.
{{#titleparts:sayfa adı |döndürülecek segment sayısı |geri dönen ilk segment }}
Döndürülecek segment sayısı parametresi belirtilmemişse, varsayılan olarak "0" olur vedöndürülecek ilk segment üzerinden (dahil) tüm segmentleri döndürür.döndürülecek ilk segment parametresi belirtilmemişse veya "0" ise varsayılan olarak "1" olur:
{{#titleparts:Talk:Foo/bar/baz/quok }}
→Talk:Foo/bar/baz/quok{{#titleparts:Talk:Foo/bar/baz/quok | 1 }}
→Talk:FooSee also {{ROOTPAGENAME}}.{{#titleparts:Talk:Foo/bar/baz/quok | 2 }}
→Talk:Foo/bar{{#titleparts: Talk:Foo/bar/baz/quok | 2 | 2 }}
→bar/baz{{#titleparts: Talk:Foo/bar/baz/quok | 2 | 3 }}
→baz/quok{{#titleparts: Talk:Foo/bar/baz/quok | 3 | 2 }}
→bar/baz/quok{{#titleparts: Talk:Foo/bar/baz/quok | | 2 }}
→bar/baz/quok{{#titleparts: Talk:Foo/bar/baz/quok | | 5 }}
→Her iki değer için de negatif değerler kabul edilir.döndürülecek segment sayısı parametresi için negatif değerler, dizenin sonundaki segmentleri etkin bir şekilde şerit eder.döndürülecek ilk segment için negatif değerler "bu segment sağdan sayılarak başla" anlamına gelir:
{{#titleparts:Talk:Foo/bar/baz/quok | -1 }}
→Talk:Foo/bar/baz Dizenin sonundan bir segment çıkarır. Ayrıca bakınız {{BASEPAGENAME}}.{{#titleparts: Talk:Foo/bar/baz/quok | -4 }}
→ Dizenin sonundan 4 parçayı da çıkarır{{#titleparts: Talk:Foo/bar/baz/quok | -5 }}
→ Dizenin sonundan 5 parça çıkarır (var olandan fazla){{#titleparts: Talk:Foo/bar/baz/quok | | -1 }}
→ quok Son segmenti döndürür. Ayrıca bakınız {{SUBPAGENAME}}.{{#titleparts: Talk:Foo/bar/baz/quok | -1 | 2 }}
→ bar/baz Dizenin sonundan bir segmenti çıkarır, ardından ikinci segmenti ve ötesini döndürür{{#titleparts: Talk:Foo/bar/baz/quok | -1 | -2 }}
→ baz İkinci son öğeden kopyalamaya başlayın; dizenin sonundan bir segmenti çıkarınİşlemeden önce,sayfa adı parametresinin kodu HTML ile çözülür: eğer bazı standart HTML karakter varlıkları içeriyorsa, bunlar düz karakterlere dönüştürüleceklerdir (UTF-8 ile dahili olarak kodlanmıştır, yani bu ayrıştırıcı işlevini kullanan MediaWiki kaynak sayfasındakiyle aynı kodlama).
"
,"
veya"
oluşumu"
ile değiştirilecektir.{{PAGENAME}}
ve benzeri gibi) bazı sihirli anahtar kelimeleri veya ayrıştırıcı işlevlerinin, kendi giriş parametreleri HTML olarak kodlanmamış olsa bile, gereksiz yere HTML kodlu dizeler döndürdüğü bilinmektedir:titleparts ayrıştırıcı işlevi daha sonra, bu döndürülen dizeleri, parametrede bir sayfa adı alan ({{PAGESINCAT:}}
gibi ancak hâlâ HTML-kodlanmış giriş dizeleri ile düzgün çalışmayan) diğer bazı ayrıştırıcı işlevler tarafından doğru şekilde işlenebilmeleri için dönüştürmek için bir geçici çözüm olarak kullanılabilir.
Örneğin, geçerli sayfaCategory:Côte-d'Or ise, o zaman:
{{#ifeq: {{FULLPAGENAME}} | Category:Côte-d'Or | 1 | 0 }}
ve{{#ifeq: {{FULLPAGENAME}} | Category:Côte-d'Or | 1 | 0 }}
kodunun her ikisi de1
; (#ifeq ayrıştırıcı işlevi, giriş parametrelerinin HTML kodunu çözme işlemini gerçekleştirir).{{#switch: {{FULLPAGENAME}} | Category:Côte-d'Or = 1 | #default = 0 }}
ve{{#switch: {{FULLPAGENAME}} | Category:Côte-d'Or = 1 | #default = 0 }}
'nin her ikisi de1
; (#switch ayrıştırıcı işlevi, giriş parametrelerinin HTML kodunu çözme işlemini gerçekleştirir).{{#ifexist: {{FULLPAGENAME}} | 1 | 0 }}
,{{#ifexist: Category:Côte-d'Or | 1 | 0 }}
ve hatta{{#ifexist: Category:Côte-d'Or | 1 | 0 }}
, eğer o kategori sayfası varsa,1
değerini döndürür (#ifexist ayrıştırıcı işlevi, giriş parametrelerinin HTML kodunu çözme işlemini gerçekleştirir);{{PAGESINCAT: Côte-d'Or }}
sıfır olmayan bir sayı döndürür, eğer o kategori sayfalar veya alt kategoriler içeriyorsaancak:{{PAGESINCAT: {{CURRENTPAGENAME}} }}
, tıpkı aşağıdaki gibikoşulsuz olarak 0 döndürebilir:{{PAGESINCAT: {{PAGENAME:Category:Côte-d'Or}} }}
{{PAGESINCAT: {{PAGENAME:Category:Côte-d'Or}} }}
Bu beklenmedik davranışın nedeni, MediaWiki'nin güncel sürümlerinde iki uyarı olmasıdır:
{{FULLPAGENAME}}
, hatta{{FULLPAGENAME:Côte-d'Or}}
bile, beklenenCategory:Côte-d'Or
değil, gerçekte HTML kodluCategory:Côte-d'Or
dizesinidöndürebilir ve:{{PAGESINCAT: Côte-d'Or }}
koşulsuz şekilde 0 döndürür (PAGESINCAT sihirli anahtar kelimesi, giriş parametresinin HTML kodunu çözmez).titleparts kullanan basit geçici çözüm (ki bu, MediaWiki'nin sonraki bir sürümünde iki uyarı düzeltilirse çalışmaya devam edecektir):
{{PAGESINCAT: {{#titleparts: {{CURRENTPAGENAME}} }} }}
{{PAGESINCAT: {{#titleparts: {{PAGENAME:Category:Côte-d'Or}} }} }}
{{PAGESINCAT: {{#titleparts: {{PAGENAME:Category:Côte-d'Or}} }} }}
, hepsi aynı kategorideki gerçek sayfa sayısını döndürür.Ardından, kodu çözülensayfa adı mümkün olduğunca MediaWiki tarafından desteklenen standart bir sayfa başlığına standart hâle getirilir:
{{#titleparts: Talk:Foo/bah_boo|1|2}}
→bah booOrijinaldeki alt çizgiye rağmen bah_boo değil.{{#titleparts: a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/aa/bb/cc/dd/ee | 1 | 25 }}
→y/z/aa/bb/cc/dd/ee{{#titleparts: {{#titleparts: a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/aa/bb/cc/dd/ee| 1 | 25 }} | 1 | 2}}
→z{{#titleparts:talk:a/b/c }}
→Talk:A/b/c{{#titleparts:one/two/three/four|1|1 }}
→One{{#titleparts: one/two/three/four|1|2 }}
→twoKüçük harf gerekiyorsa, çıkışı kontrol etmek için lc: işlevini kullanın:
{{lc: {{#titleparts:one/two/three/four|1|1 }} }}
→oneDoğru ilk alt dize büyük harf kullanımını (büyük harf veya küçük harf) elde etmek için dizenin başına bir sahte eğik çizgi ekleyebilirsiniz.döndürülecek ilk segment için1
yerine2
kullanın:
{{#titleparts:/one/two/three/four|1|2 }}
→one{{#titleparts:/One/two/three/four|1|2 }}
→One![]() | Bir sayfa başlığında geçersiz olan belirli karakterler, #titleparts ögesinin dizeyi ayrıştırmamasına neden olur:
|
![]() | Başlığın herhangi bir kısmı yalnızca "
|
![]() | Giriş UTF-8'de 255 baytı aşarsa bu işlev düzgün bir şekilde bozulmaz. Giriş dizesi 256 bayt veya daha fazlaysa, tüm dize döndürülür. |
The ParserFunctions extension optionally defines various string functions if$wgPFEnableStringFunctions
is set totrue
:
#len
#pos
#rpos
#sub
#count
#replace
#explode
#urldecode
See the dedicated subpage for documentation, andManual:Performing string operations with parser functions for examples.
![]() | In 2013, it was decided thatthese functions willnever be enabled on any Wikimedia wiki, because they are inefficient when used on a large scale (seephab:T8455 for some history).These functions do NOT work on Wikimedia wikis! If you are here to write something on a Wikimedia project, you are looking for something else: if your home wiki has string functions, it probably usesLua.For example, the English Wikipedia usesModule:String, which does some of the same things with wildly different syntax.There are also individualString-handling templates. |
Here is a short overview ofModule:String functions:
{{#invoke:String|len|target_string}}
{{#invoke:String|sub|target_string|start_index|end_index}}
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
{{#invoke:String|pos|target_string|index_value}}
{{#invoke:String|find|source_string|target_string|start_index|plain_flag}}
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
{{#invoke:String|rep|source|count}}
{{#invoke:String|escapePattern|pattern_string}}
{{#invoke:String|count|source_str|pattern_string|plain_flag}}
{{#invoke:String|join|separator|string1|string2|...}}
Ayrıştırıcı işlevleri, karma karakterinin önünesubst:
eklenerekyerine koyabilir:
{{subst:#ifexist: Help:Extension:ParserFunctions/tr | [[Help:Extension:ParserFunctions/tr]] | Help:Extension:ParserFunctions/tr }}
→[[Help:Extension:ParserFunctions/tr]]
kodu, Help:Extension:ParserFunctions/tr var olduğu sayfasından itibaren vikimetne eklenecektir.![]() | Yerine koyan ayrıştırıcı işlevlerinin sonuçları, ifadelerdeğişikenler veya diğer ayrıştırıcı işlevleri gibi yerine koyulmuş (koyulmamış) geçici kod içeriyorsa tanımsızdır. Tutarlı sonuçlar için, değerlendirilecek ifadedeki tüm uçucu kod değiştirilmelidir.Yardım:Yerine koyma sayfasına bakın. |
Yerine koyma<ref>
…</ref>
içinde çalışmaz; bu amaçla{{subst:#tag:ref|
…}}
kullanabilirsiniz.
Özellikle{{#time:
…|now-
…}}, tarihler içeren sayfalarayönlendirmeler için kullanışlı olabilir, ancak bu işe yaramaz.
Ayrıştırıcı işlevleri,vikitablo sözdizimini ve düz çizgi karakterlerini (|
) yönetecek ve tüm ham boru karakterlerini parametre bölücüler olarak değerlendirecektir.Bunu önlemek için çoğu viki, içeriği yalnızca ham boru karakteri (|
) olan bir şablonTemplate:! kullandı, çünkü MW 1.24 bir{{!}}
sihirli kelime bu çamurun yerini aldı.Bu, boruyu MediaWiki ayrıştırıcısından 'gizler' ve bir sayfadaki tüm şablonlar ve değişkenler genişletilene kadar dikkate alınmamasını sağlar.Daha sonra bir tablo satırı veya sütun ayırıcısı olarak yorumlanacaktır.Alternatif olarak, daha az sezgisel ve hataya daha açık olmasına rağmen ham HTML tablosu sözdizimi kullanılabilir.
Ayrıca, bir HTML varlığı kullanarak düz, yorumlanmamış bir karakter olarak görüntülemek için boru karakterinden de çıkabilirsiniz:|
.
Açıklama | Yazdığın | Yaptığın |
---|---|---|
Tablo satırı/sütun ayırıcısı olarak çıkış borusu karakteri | {{!}} | | |
Düz karakter olarak çıkış borusu karakteri | | | | |
The same pipe protection applies as for the following example:
{{Documentation|content=... text before ...<code>subpage-name=sandbox3</code> is equivalent to <code>sandbox link=../sandbox3 | sandbox name=sandbox3</code>.... text after ...}}
We observe thattext after is not displayed when the pipe | just beforesandbox name= is present since|sandbox name= is considered erroneously to be a parameter of templateDocumentation at the same level as|content= is.
Yeni satırlar, sekmeler ve boşluklar dahil olmak üzere boşluk, bu ayrıştırıcı işlevlerinin tüm parametrelerinin başından ve sonundan çıkarılır. Bu istenmiyorsa, dizeler tırnak içine alındıktan sonra karşılaştırma yapılabilir.
{{#ifeq: foo | foo | equal | not equal }}
→equal{{#ifeq: "foo " | " foo" | equal | not equal }}
→not equalthen ve else bölümlerinin kırpılmasını önlemek için, $meta-tpl-if sayfasına bakın. Then ve else bölümlerinin kırpılmasını önlemek için, bkz. $meta-tpl-if. Bazı insanlar bunu boşluklar yerine <Template:$markup-nw> </nowiki> kullanarak başarır.
foo{{#if:|| bar}}foo
→foobarfoofoo{{#if:||<nowiki/>bar<nowiki/>}}foo
→foo bar fooAncak, ayrıştırıcı bir satırdaki birden çok boşluk karakterini tek bir karaktere sıkıştırdığından, bu yöntem yalnızcatek bir boşluk karakteri oluşturmak için kullanılabilir.
<spanstyle="white-space: pre;">foo{{#if:||<nowiki/> bar<nowiki/>}}foo</span> | → | foo bar foo |
Bu örnekte, boşlukları tarayıcı tarafından korunmaya zorlamak içinwhite-space: pre
stili kullanılır, ancak bununla bile boşluklar gösterilmez. Bunun nedeni, tarayıcıya gönderilmeden önce boşlukların yazılım tarafından çıkarılmasıdır.
Boşlukları 
(kırılabilir boşluk) veya
yazılım tarafından değiştirilmediği için (kırılmaz boşluk) ile değiştirerek bu davranışa geçici bir çözüm bulmak mümkündür:
<spanstyle="white-space: pre;">foo{{#if:||   bar   }}foo</span>
→foo bar foofoo{{#if:|| bar }}foo
→foo bar fooBeware that not all parameters are created equal.In ParserFunctions, whitespace at the beginning and end is always stripped.Intemplates, whitespace at the beginning and end is stripped for named parameters and named unnamed parameters butnot from unnamed parameters:
"{{lc: AbC}}"
→ "abc"[1]"{{uc: AbC}}"
→ "ABC"[2]"{{lcfirst: AbC}}"
→ "abC"[3]"{{ucfirst: abc}}"
→ "Abc"[4]"{{urlencode: AbCdEf ghi}}"
renders as
"AbC%0AdEf+ghi"
So inner new lines convert into %0A, and inner spaces convert into +.
{{anchorencode: AbC dEf ghi}}
renders as
AbC_dEf_ghi