Help:Extension:ParserFunctions/tr

uzantısı, MediaWiki'de zaten mevcut olan ek olarak on bir yeni Help:Magic words#Parser functions|ayrıştırıcı işlevi sunar. (Dize işleme için ek ayrıştırıcı işlevleri sağlamak üzere yapılandırılabilir; bu dize işlevleri belgelenmiştir.) Bu uzantı tarafından sağlanan tüm ayrıştırıcı işlevleri şu şekildedir:

#expr
Bu işlev, matematiksel bir ifadeyi değerlendirir ve hesaplanan değeri döndürür. Bu işlev,  işlevi aracılığıyla  olarak da kullanılabilir.



Kullanı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 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.

Boole cebri kullanılarak değerlendirme yapılırken, sıfır  olarak değerlendirilir ve pozitif veya negatif herhangi bir sıfır olmayan değer   olarak değerlendirilir:



Boş bir giriş ifadesi boş bir dize döndürür. Geçersiz ifadeler,  işlevi kullanılarak yakalanabilecek birkaç hata mesajından birini döndürür:



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:



Sihirli 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,,   kullanılarak elde edilebilecek 0 ile istediğimiz yerde  ile sonuçlanır. Bu, özellikle sayıların çevrildiği bazı dillerde önemlidir. Örneğin, Bengalce'de, ৩০,০৬১ üretir.



Yuvarlama
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 tekli  veya   kullanın.

Dizeler
İfadeler yalnızca sayı benzeri değerlerle çalışır, dizeleri veya karakterleri karşılaştıramazlar. Bunun yerine kullanılabilir.



#if
Bu 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.





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.



Test dizesi her zaman saf metin olarak yorumlanır, bu nedenle matematiksel ifadeler değerlendirilmez (bunun için #ifexpr sayfasına bakın):



Son parametre (false) atlanabilir:



İş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.

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, " " dizesi yerine boş bir dize olarak değerlendirilir.)



Bu ayrıştırıcı işlevine ilişkin daha fazla örnek için sayfasına bakın.

#ifeq
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,  kullanmayı düşünün.



Her iki dizi de geçerli sayısal değerlerse, diziler sayısal olarak karşılaştırılır:



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


 * →  (yukarıdaki benzer örnekle tırnak işaretleri olmadan karşılaştırın)
 * →  (yukarıdaki benzer örnekle karşılaştırın, önce   geçerli bir sayı döndürür)
 * →  (yukarıdaki benzer örnekle tırnak işaretleri olmadan karşılaştırın)
 * →  (yukarıdaki benzer örnekle karşılaştırın, önce   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 bir   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:



aşağıdakiler ortaya çıkar:


 * → 20
 * → 40
 * → 40

#iferror
Bu işlev bir giriş dizesi alır ve iki sonuçtan birini döndürür; giriş dizesi,,   ve   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şlev   olarak değerlendirilir, ve diğer "failsoft" ayrıştırıcı hataları.



Dönüş dizelerinden biri veya her ikisi atlanabilir. dizesi atlanırsa, hatalı değilse  döndürülür. dizesi de atlanırsa, bir hata durumunda boş bir dize döndürülür:


 * → &zwnj;
 * → &zwnj;
 * → &zwnj;
 * → &zwnj;
 * → &zwnj;
 * → &zwnj;

Some errors may cause a tracking category to be added, using  will not suppress the addition of the category.

#ifexpr
Bu işlev, matematiksel bir ifadeyi değerlendirir ve sonucun boole değerine bağlı olarak iki dizeden birini döndürür:



girişi tam olarak yukarıdaki  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ş ifadesi  olarak değerlendirilir:



Yukarıda bahsedildiği gibi, sıfır  olarak değerlendirilir ve sıfır olmayan herhangi bir değer   olarak değerlendirilir, bu nedenle bu işlev yalnızca   ve   kullanan bir işleve eşdeğerdir:



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 nedenle  alırız).



karşılama



Dönüş değerlerinden biri veya her ikisi atlanabilir; uygun dal boş bırakıldığında çıkış verilmez:



Boolean operators of equality or inequality operators are supported.



#ifexist
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.



Sayfa mevcutsa, içerik barındırıyorsa, görünür şekilde boşsa (kategori bağlantıları veya gibi meta veriler içeriyorsa, ancak görünür bir içerik sayfası yoksa işlev   olarak değerlendirir.), boş veya bir  değerlendirilir. Sayfanın önceden var olduğu ancak silindiği de dahil olmak üzere, yalnızca kırmızı bağlantı verilen sayfalar  olarak değerlendirilir.



İşlev, özelleştirilmiş ve yazılım tarafından tanımlanan  için   olarak değerlendirilir.



Bir sayfa  kullanarak bir hedefi kontrol ederse, o sayfa hedef sayfanın  listesinde görünür. Dolayısıyla,  kodu bu sayfaya  canlı olarak dahil edildiyse, /Foo  sayfasını listeleyecektir.

Paylaşılan bir medya deposu kullanan wikilerde, bir dosyanın depoya yüklenip yüklenmediğini kontrol etmek için  kullanılabilir, ancak vikinin kendisine yüklenmez:



Dosya için yerel bir açıklama sayfası oluşturulmuşsa, yukarıdakilerin tümü için sonuç var olur.

vikiarası bağlantıları ile çalışmaz.



ifexist sınırları
, "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  işlevleri otomatik olarak false döndürür ve sayfa Category: olarak sınıflandırılır. adı vikinizin içerik diline göre değişebilir.

Bazı kullanım durumlarında,  (var olmayan sayfalara bağlantılar seçmek için) veya   (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ı  ile kontrol edildiğinden, gerekirse LocalSettings.php içindeki sınırı da arttırılabilir.



ifexist ve istenen sayfalar
Mevcut olmayan ve #ifexist kullanımı için test edilen bir sayfa İstenen Sayfalar'da yer alacaktır. Nedeni için ve bir geçici çözüm için w:Template:Linkless exists sayfasına bakın.

#rel2abs
Bu işlev, göreli bir dosya yolunu mutlak bir dosya yoluna dönüştürür.



girişi içinde aşağıdaki sözdizimi geçerlidir:


 * → mevcut düzey
 * → bir düzey yukarı çıkın
 * → /foo alt dizinine bir düzey aşağı inin

belirtilmezse, bunun yerine sayfanın tam sayfa adı kullanılacaktır:



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:



#switch
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.

Örnekler:



Kı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.

Varsayılan
dizesi  ile eşleşmezse,   döndürülür:



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



Alternatif olarak, varsayılan sonuç, bir  " " dizesiyle açıkça bildirilebilir.

Bu şekilde bildirilen varsayılan sonuçlar, işlev içinde herhangi bir yere yerleştirilebilir:



parametresi atlanırsa ve eşleşme olmazsa, hiçbir  döndürülmez:





Gruplandırma sonuçları
Birkaç  dizgisinin aynı   dizgisini döndürdüğü 'geçiş' değerlerine sahip olmak mümkündür. Bu, çoğaltmayı en aza indirir.

Burada 2, 3 ve 4 numaralı durumların tümü  döndürür; durum 6 ve 7'nin her ikisi de   döndürür. Yukarıdaki durumda son parametredeki " " atlanabilir.



Parametrelerle kullanın
İşlev, test dizesi olarak parametrelerle birlikte kullanılabilir. Bu durumda, boruyu parametre adından sonra yerleştirmek gerekli değildir, çünkü " " 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. sayfasına bakın.)



Yukarıdaki durumda,,   ile eşitse, işlev   döndürür. ile eşitse, işlev  döndürür. Parametre boşsa veya mevcut değilse, işlev  döndürür.

Yukarıdaki bölümde olduğu gibi, durumlar tek bir sonuç verecek şekilde birleştirilebilir.



Burada,  ,   veya   ile eşitse, işlev   döndürür. ile eşitse, işlev  döndürür. Parametre boşsa veya mevcut değilse, işlev  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.



Bu durumda, işlev,  mevcut olmadığı ve   veya   ile eşit olmadığı sürece boş bir dize döndürür; bu durumda sırasıyla   veya   döndürür.

Bu, varsayılan sonucu boş olarak bildirmekle aynı etkiye sahiptir.



Herhangi bir nedenle bir durumu " " 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 " " dizesinden başka bir değere sahip olması gerekir.


 * ( olmadığında veya boş olduğunda):
 * →  Foo 
 * ( " " değerine sahip olduğunda):
 * →  Bar 
 * (, " " değerine sahip olduğunda):
 * →  Foo 

Bu varsayımsal durumda, boruyu parametresine eklemeniz gerekir.



Karşılaştırma davranışı
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:





Bir  dizesi boş olabilir:



Bir eşleşme bulunduğunda, sonraki  yoksayılır:





Ham eşittir işaretleri
"Case" dizeleri ham eşittir işaretleri içeremez. Bu sorunu çözmek için, tek bir eşittir işareti içeren bir = şablonu oluşturun:  veya eşittir işaretini HTML kodu   ile değiştirin.

Örnek:



#ifeq değiştirme
, genişleme derinliğini azaltmak için kullanılabilir.

Örneğin:



eşdeğerdir



yani derin yuvalama, doğrusal:

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

#time
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ğer sihirli kelime  – diğer bir deyişle, sayfanın en son HTML'ye dönüştürüldüğü zaman.



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). Biçimlendirme dizesindeki karakterlerden kaçmanın da iki yolu vardır: Ek olarak,  digrafı tek bir değişmez "x" olarak yorumlanır.
 * 1) Bir biçimlendirme karakterinin ardından gelen bir ters eğik çizgi, tek bir değişmez karakter olarak yorumlanır
 * 2) Çift tırnak içine alınmış karakterler, değişmez karakterler olarak kabul edilir ve tırnak işaretleri kaldırılı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).



PHP'nin strtotime işlevi tarafından kabul edilen herhangi bir biçimde olabilir. Mutlak (ör. ), göreli (ör.  ) ve birleşik zamanlar (ör.  ) kabul edilir.


 * &rarr; 
 * &rarr; 
 * &rarr; 
 * &rarr; 
 * &rarr; 
 * &rarr; 
 * &rarr; 

ISO 639-3 (?) içindeki, dizenin seçilen dilde görüntülenmesini sağlar



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çin resmi PHP belgelerine bakın).

Ayrıntılar için aşağıdaki örneklere bakın:





Bir Unix zaman damgası hesapladıysanız, onu önceden bir  sembolü ekleyerek tarih hesaplamalarında kullanabilirsiniz.



Tam veya kısmi mutlak tarihler belirtilebilir; işlev, geçerli değerler kullanılarak belirtilmeyen tarihin bölümlerini "doldurur":



Dört basamaklı bir sayı her zaman bir yıl olarak yorumlanır, asla saat ve dakika olarak yorumlanmaz:



Altı 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):


 * →  Giriş, yıl+ay kodu yerine zaman olarak değerlendirilir.
 * →  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:



çağrılarının biçim dizelerinin toplam uzunluğu 6000 karakterle sınırlıdır.



Saat Dilimi sorunu
Bu #time ayrıştırıcı işlevinde (daha özel olarak PHP DateTime içinde), göreli zaman dilimi ofsetleri olarak tamsayı olmayan ögelerin iletilmesine izin vermeyen bir hata var. Bu sorun, EDT gibi bir saat dilimi kullanıldığında geçerli değildir. Örneğin:


 * &rarr;

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


 * &rarr;

Bu soruna geçici bir çözüm bulmak için, zamanı şu şekilde dakikalara veya saniyelere dönüştürmeniz yeterlidir:


 * &rarr;
 * &rarr;

(Bu işlevin geliştiricisi Tim Starling, bu çözüm için tam sözdizimini sağladı.)

#timel
Bu işlev,  parametresi   olarak ayarlandığında   ile aynıdır, bu nedenle her zaman vikinin yerel saatini kullanır ( içinde ayarlandığı gibi).

İşlevin sözdizimi şöyledir:





Örneğin, aşağıdaki örneklere bakın:





#titleparts
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.



Döndürülecek segment sayısı parametresi belirtilmemişse, varsayılan olarak "0" olur ve dö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:


 * →  See also.
 * →  See also.

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:


 * →  Dizenin sonundan bir segment çıkarır. Ayrıca bakınız.
 * →   Dizenin sonundan 4 parçayı da çıkarır
 * →   Dizenin sonundan 5 parça çıkarır (var olandan fazla)
 * →   Son segmenti döndürür. Ayrıca bakınız.
 * →   Dizenin sonundan bir segmenti çıkarır, ardından ikinci segmenti ve ötesini döndürür
 * →   İ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).


 * Örneğin, sayfa adı içindeki herhangi bir,   veya   oluşumu   ile değiştirilecektir.
 * HTML'den düz metne başka bir dönüşüm gerçekleştirilmez, bu nedenle HTML etiketleri, sayfa başlıklarında geçersiz olsalar bile bu ilk adımda olduğu gibi bırakılır.

Ardından, kodu çözülen sayfa adı mümkün olduğunca MediaWiki tarafından desteklenen standart bir sayfa başlığına standart hâle getirilir:


 * 1) Tüm alt çizgiler otomatik olarak boşluklarla değiştirilir:
 * →  Orijinaldeki alt çizgiye rağmen bah_boo değil.
 * 1) Dize en fazla 25 kez bölünür; daha fazla eğik çizgi yok sayılır ve 25. öğe dizenin geri kalanını içerecektir. Dize ayrıca sayfa başlığı olarak kabul edildiğinden 255 karakterle sınırlıdır:
 * Herhangi bir nedenle bu işlevi sınırına kadar zorlamanız gerekiyorsa, pek olası olmasa da, işlev çağrılarını iç içe geçirerek 25 bölme sınırını atlamak mümkündür:
 * 1) Son olarak, ilk alt dize yerel vikinin büyük harf kullanımı ayarlarına göre büyük harfle yazılır (bu alt dize de yerel bir ad alanı adıyla başlıyorsa, bu ad alanı adı da normalleştirilir).
 * 1) Son olarak, ilk alt dize yerel vikinin büyük harf kullanımı ayarlarına göre büyük harfle yazılır (bu alt dize de yerel bir ad alanı adıyla başlıyorsa, bu ad alanı adı da normalleştirilir).
 * 1) Son olarak, ilk alt dize yerel vikinin büyük harf kullanımı ayarlarına göre büyük harfle yazılır (bu alt dize de yerel bir ad alanı adıyla başlıyorsa, bu ad alanı adı da normalleştirilir).

{{Warning|1= Bir sayfa başlığında geçersiz olan belirli karakterler, #titleparts ögesinin dizeyi ayrıştırmamasına neden olur:


 * → {{#titleparts: {one/two} | 1 | 1 }}. Beklenen üretmez: {one
 * → {{#titleparts: page/123 | 1 | 2 }}. Sayfa başlıklarında köşeli parantezler geçersiz olduğundan ve bu ayrıştırıcı işlevi, MediaWiki sözdizimini veya diğer HTML veya MediaWiki etiketlerini kullansalar bile, giriş sayfa adı parametresine gömülü bağlantıları işlemediği için çalışmaz.
 * → "{{#titleparts: red/#00FF00/blue| 1 | 3 }}". Sayfa başlıklarında "#" da yasa dışı olduğu için çalışmıyor.

}}

StringFunctions
Bu işlevlerin tümü, StringFunctions uzantısından entegre edildi, ancak yalnızca bir hizmetli  ile   ayarlarsa kullanılabilir.

Bu işlevlerin tümü O(n) zaman karmaşıklığında çalışır ve onları DoS saldırılarına karşı güvenli kılar.

#len
Sözdizimi:
 * 1) len işlevi, verilen dizenin uzunluğunu döndürür.

Dönüş değeri her zaman dize kaynağındaki bir karakter sayısıdır (şablon çağrılarının genişletilmesinden sonra, ancak HTML'ye dönüştürülmesinden önce). Dize belirtilmezse, dönüş değeri sıfırdır.

#pos
Sözdizimi:
 * 1) pos işlevi, dize içindeki belirli bir arama teriminin konumunu döndürür.

offset parametresi, belirtilirse, bu işlevin aramaya başlaması gereken bir başlangıç konumunu söyler.

arama terimi bulunursa, dönüş değeri dize içindeki ilk konumun sıfır tabanlı bir tamsayıdır.

arama terimi bulunamazsa, işlev boş bir dize döndürür.

#rpos
Sözdizimi:
 * 1) rpos işlevi, dize içindeki belirli bir arama teriminin son konumunu döndürür.

arama terimi bulunursa, dönüş değeri dize içindeki son konumunun sıfır tabanlı bir tamsayıdır.

arama terimi bulunamazsa, işlev -1 ile döner.

#sub
Sözdizimi:
 * 1) sub işlevi, verilen dizeden bir alt dize döndürür.

start parametresi, pozitifse (veya sıfırsa), döndürülecek ilk karakterin sıfır tabanlı bir dizinini belirtir.

Örnek: döndürür.

döndürür.

start parametresi negatifse, sondan kaç karakter döndürüleceğini belirtir.

Örnek: döndürür.

length parametresi, varsa ve pozitifse, döndürülen dizenin maksimum uzunluğunu belirtir.

Örnek: döndürür.

length parametresi negatifse, dizenin sonundan kaç karakterin çıkarılacağını belirtir.

Örnek: döndürür.

start parametresi negatifse, sondan kaç karakter döndürüleceğini belirtir. length parametresi, varsa ve pozitifse, döndürülen dizenin başlangıç noktasından itibaren maksimum uzunluğunu belirtir.

Örnek: döndürür.

#count

 * 1) count işlevi, verilen metinde belirli bir alt dizenin kaç kez göründüğünü döndürür.

#replace

 * 1) replace işlevi, verilen dizeyi, bir arama teriminin tüm oluşumları yerine bir ikame terimle değiştirilerek döndürür.

search term belirtilmemişse veya boşsa, tek bir boşluk aranacaktır.

replacement term belirtilmemişse veya boşsa, search term tüm oluşumları dize üzerinden kaldırılacaktır.

Şu anda sözdizimi, büyük/küçük harf duyarlılığı ayarını değiştirmek için bir anahtar sağlamaz. Ancak geçici bir çözüm olarak sihirli biçimlendirme kelimelerini kullanabilirsiniz. (ör. ) Örneğin, "Category:" kelimesini büyük/küçük harfe bakılmaksızın dizeden çıkarmak istiyorsanız şunu yazabilirsiniz:
 * Büyük/küçük harfe duyarsız değiştirme:

Ancak dezavantaj, çıkışının tamamen küçük harf hâline gelmesidir. Muhafazayı değiştirdikten sonra tutmak istiyorsanız, aynı şeyi elde etmek için birden çok iç içe yerleştirme düzeyi (yani birden çok değiştirme çağrısı) kullanmanız gerekir.

#explode
Sözdizimi:
 * 1) explode işlevi verilen dizeyi parçalara böler ve parçalardan birini döndürür.

delimiter parametresi, string parçalara bölmek için kullanılacak bir dizeyi belirtir. Bu delimiter dizesi herhangi bir parçanın parçası değildir ve iki delimiter dizesi yan yana olduğunda aralarında boş bir parça oluştururlar. Bu parametre belirtilmezse tek boşluk kullanılır. limit parametresi, bağımsız StringFunctions sürümünde değil, yalnızca ParserFunctions'da mevcuttur ve son bölümde kalan tüm metinlerle birlikte döndürülen parça sayısını sınırlamanıza olanak tanır.

position parametresi hangi parçanın döndüreceğini belirtir. Parçalar 0'dan sayılır. Bu parametre belirtilmezse ilk parça kullanılır (0 numaralı parça). position olarak negatif bir değer kullanıldığında, parçalar sondan sayılır. Bu durumda -1 numaralı parça son parça anlamına gelir. Örnekler:


 * döndürür
 * döndürür
 * döndürür
 * döndürür

Dönüş değeri konum-inci parçadır. Konumun belirttiğinden daha az parça varsa, boş bir dize döndürülür.

#urldecode
, bir 'URL kodlanmış' dizesinden kaçış karakterlerini tekrar okunabilir metne dönüştürür. Sözdizimi:

Notlar:
 * Bu işlev, PHP'nin urldecode işlevini doğrudan açığa çıkararak çalışır.
 * Bir karakter kodu kaynağı www.w3schools.com adresinde bulunabilir.
 * Bunun tersi olan, 1.18 sürümünden itibaren MediaWiki'ye entegre edilmiştir; örnekler için  sayfasına bakın.
 * urldecode, 2010 yılında Stringfunctions'dan 1b75afd18d3695bdb6ffbfccd0e4aec064785363 işlemle birleştirildi

Sınırlar
Bu modül üç genel ayarı tanımlar:


 * $wgStringFunctionsLimitSearch
 * $wgStringFunctionsLimitReplace
 * $wgStringFunctionsLimitPad

Bunlar, işlevlerin O(n) zaman karmaşıklığında çalışmasını sağlamak için bazı işlevlerin bazı parametrelerini sınırlamak için kullanılır ve bu nedenle DoS saldırılarına karşı güvenlidir.

$wgStringFunctionsLimitSearch
Bu ayar #pos, #rpos, #replace ve #explode tarafından kullanılır. Tüm bu işlevler, çalışırken daha büyük bir dizede bir alt dizeyi arar; bu, O(n*m) içinde çalışabilir ve bu nedenle yazılımı DoS saldırılarına karşı daha savunmasız hâle getirir. Bu değeri belirli bir küçük sayıya ayarlayarak, zaman karmaşıklığı O(n) ile düşürülür.

Bu ayar, aranan dizinin izin verilen maksimum uzunluğunu sınırlar.

Varsayılan değer 30 çok baytlı karakterdir.

$wgStringFunctionsLimitReplace
Bu ayar #replace tarafından kullanılır. Bu işlev, çok büyük miktarda veriyi hızla oluşturmak için kullanılabilen bir dizenin tüm oluşumlarını diğeriyle değiştirir ve bu nedenle yazılımı DoS saldırılarına karşı daha savunmasız hâle getirir. Bu ayar, değiştirilen dizenin izin verilen maksimum uzunluğunu sınırlar.

Varsayılan değer 30 çok baytlı karakterdir.



Yerine koyma
Ayrıştırıcı işlevleri, karma karakterinin önüne  eklenerek yerine koyabilir:


 * →   kodu, var olduğu sayfasından itibaren vikimetne eklenecektir.

Yerine koyma içinde çalışmaz; bu amaçla  &hellip;  kullanabilirsiniz.

Yönlendirmeler
Özellikle , tarihler içeren sayfalara  için kullanışlı olabilir, ancak bu işe yaramaz.



Tablolarda kaçan boru karakterleri
Ayrıştırıcı işlevleri, 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 şablon     :! kullandı, çünkü MW 1.24 bir  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:.



Boşlukları çıkarma
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.



then ve else bölümlerinin kırpılmasını önlemek için, m:Template:If sayfasına bakın. Then ve else bölümlerinin kırpılmasını önlemek için, bkz. m:Template:If. Bazı insanlar bunu boşluklar yerine &lt; &gt;  &lt; /nowiki &gt; kullanarak başarır.


 * → foofoo
 * → foofoo

Ancak, ayrıştırıcı bir satırdaki birden çok boşluk karakterini tek bir karaktere sıkıştırdığından, bu yöntem yalnızca tek bir boşluk karakteri oluşturmak için kullanılabilir.




 * || → || foofoo 
 * }

Bu örnekte, boşlukları tarayıcı tarafından korunmaya zorlamak için  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:


 * →  foofoo 
 * → foofoo

Beware that not all parameters are created equal. In ParserFunctions, whitespace at the beginning and end is always stripped. In templates, whitespace at the beginning and end is stripped for named parameters and named unnamed parameters but not from unnamed parameters:


 * → foofoo
 * → foofoo
 * → foofoo



Ayrıca bakınız

 * m:Help:Hesaplama
 * m:Help:Yeni satırlar ve boşluklar
 * m:Help:ParserFunctions sözdizimi ve TeX sözdizimi arasında karşılaştırma
 * , an (incomplete) list of parser functions added by core and extensions.
 * Module:String, eskiliyor
 * Parser functions for Wikibase (the extensions that enables Wikidata): d:Special:MyLanguage/Wikidata:How to use data on Wikimedia projects
 * Module:String, eskiliyor
 * Parser functions for Wikibase (the extensions that enables Wikidata): d:Special:MyLanguage/Wikidata:How to use data on Wikimedia projects
 * Parser functions for Wikibase (the extensions that enables Wikidata): d:Special:MyLanguage/Wikidata:How to use data on Wikimedia projects