Extension:ParserFunctions/String functions/tr

MediaWiki manüel uzantıları
ParserFunctions/String functions
Sürüm durumu: kararlı
Uygulama Ayrıştırıcı işlevi
Açıklama Ayrıştırıcıyı dize işlevleriyle geliştirir
Yazar(lar)
En son sürüm 1.6.1
MediaWiki >= 1.39
Lisans MIT Lisansı
İndir See extension ParserFunctions uzantısına bakın
  • $wgPFEnableStringFunctions
  • $wgPFStringLengthLimit
Quarterly downloads 402 (Ranked 10th)
Public wikis using 15,766 (Ranked 4th)

StringFunctions uzantıları, dizeler üzerinde çalışan ek bir parser function kümesini tanımlar. Sürüm 2.0, <nowiki> ile olan tutarsızlıkları çözer ve kurulu sunucuda PHP'nin mbstring uzantısına olan ihtiyacı ortadan kaldırır.

Not: Bu uzantı eski. Bu işlevlerin tümü artık ParserFunctions uzantısına entegre edildi, ancak yalnızca bir hizmetli LocalSettings.php içinde $wgPFEnableStringFunctions = true; değerini ayarlarsa kullanılabilir. Bu işlevlerin belgeleri burada kalır.
MediaWiki'nin özü sihirli kelimeler urlencode ve padleft/padright uygular.

İşlevler edit

Bu modül, işlevleri len, pos, rpos, sub, pad, replace, explode, urlencode ve urldecode tanımlar.

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

Notlar:

  1. Bu işlevlerin bazı parametreleri, kötüye kullanımı önlemek için genel ayarlarla sınırlandırılmıştır. Bundan sonraki Sınırlar bölümüne bakın.
  2. Büyük/küçük harfe duyarlı işlevler için, bazı durumlarda geçici çözüm olarak sihirli kelime {{lc:dizeniz_buraya}} kullanabilirsiniz.
  3. Bir MediaWiki sunucusunun bu işlevleri etkinleştirip etkinleştirmediğini belirlemek için Special:Version sayfasındaki desteklenen Genişletilmiş ayrıştırıcı işlevleri listesini kontrol edin.
  4. Dize uzunluğu $wgPFStringLengthLimit değişkeni ile sınırlıdır, varsayılan olarak 1000 şeklindedir.

#len edit

#len ayrıştırıcı işlevi, 1.2.0 sürümünden itibaren ParserFunctions uzantısıyla birleştirildi
  1. len işlevi, verilen dizenin uzunluğunu döndürür. Sözdizimi:
{{#len:dize}}

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.

Notlar
  • Bu işlev, UTF-8 çok baytlı karakterlerle güvenlidir. Örnek:
    • {{#len:Žmržlina}}8
  • Baştaki ve sondaki boşluklar veya yeni satırlar sayılmaz, ancak ara boşluklar ve yeni satırlar dikkate alınır. Örnekler:
    • {{#len:Icecream }}8
    • {{#len: a   b }}5 (2 karakter arasında 3 boşluk)
  • Kaynak olarak verilen karakterler dönüştürülmez, ancak kaynak biçimlerine göre sayılır.
    • {{#len:&nbsp;}}6 (adlandırılmış karakter kaynakçası).
    • {{#len:&#32;}}5 (sayısal karakter kaynakçası, burada bir boşluk belirtmesine rağmen göz ardı edilmez).
  • ‎<nowiki> gibi etiketler ve diğer etiket uzantıları, içerikleri ayrıştırıcıdan gizlendiğinden her zaman sıfır uzunluğunda olacaktır. Örnek:
    • {{#len:<nowiki>Bu bir </nowiki>testir}}3

#pos edit

#pos ayrıştırıcı işlevi, 1.2.0 sürümünden itibaren ParserFunctions uzantısıyla birleştirildi
  1. pos işlevi, dize içindeki belirli bir arama teriminin konumunu döndürür. Sözdizimi:
{{#pos:dize|arama terimi|offset}}

offset parametresi, belirtilirse, bu işlevin aramaya başlayacağı 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.

Notlar:

  • Bu işlev büyük/küçük harfe duyarlıdır.
  • Arama teriminin izin verilen maksimum uzunluğu, $wgStringFunctionsLimitSearch genel ayarıyla sınırlıdır.
  • Bu işlev, UTF-8 çok baytlı karakterlerle güvenlidir. Örnek: {{#pos:Žmržlina|žlina}}, 3 döndürür.
  • #len ile olduğu gibi, ‎<nowiki> ve diğer etiket uzantıları, karakter konumu açısından 1 uzunluğa sahip olarak değerlendirilir. Örnek: {{#pos:<nowiki>Bu bir </nowiki>testtir|test}}, 1 döndürür.

#rpos edit

#rpos ayrıştırıcı işlevi, 1.2.0 sürümünden itibaren ParserFunctions uzantısıyla birleştirildi
  1. rpos işlevi, dize içindeki belirli bir arama teriminin son konumunu döndürür. Sözdizimi:
 {{#rpos:dize|arama terimi}}

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.

İpucu: Bunu son sınırlayıcıyı aramak için kullanırken, son sınırlayıcıdan sonraki konumu almak için sonuca +1 ekleyin. Bu, sınırlayıcı bulunmadığında da çalışır, çünkü "-1 +1", verilen değerin başlangıcı olan sıfırdır.

Notlar:

  • Bu işlev büyük/küçük harfe duyarlıdır.
  • Arama teriminin izin verilen maksimum uzunluğu, $wgStringFunctionsLimitSearch genel ayarıyla sınırlıdır.
  • Bu işlev, UTF-8 çok baytlı karakterlerle güvenlidir. Örnek: {{#rpos:Žmržlina|lina}}, 4 döndürür.
  • #len ile olduğu gibi, ‎<nowiki> ve diğer etiket uzantıları, karakter konumu açısından 1 uzunluğa sahip olarak değerlendirilir. Örnek: {{#rpos:<nowiki>Bu bir </nowiki>testir|test}}, 1 döndürür.

#sub edit

#sub ayrıştırıcı işlevi, 1.2.0 sürümünden itibaren ParserFunctions uzantısıyla birleştirildi
  1. sub işlevi, verilen dizeden bir alt dize döndürür. Sözdizimi:
{{#sub:dize|start|length}}

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

Örnek: {{#sub:Icecream|3}}, cream döndürür.

{{#sub:Icecream|0|3}}, Ice döndürür.

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

Örnek: {{#sub:Icecream|-3}}, eam döndürür.

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

Örnek: {{#sub:Icecream|3|3}}, cre döndürür.

length parametresi negatif ise, dizgenin sonundan kaç karakter çıkarılacağını belirtir.

Örnek: {{#sub:Icecream|3|-3}}, cr döndürür.

start parametresi negatif ise, 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: {{#sub:Icecream|-3|2}}, ea döndürür.

Notlar:

  • length parametresi sıfır ise kesinlikle kesme işlemi için kullanılmaz.
    • Örnek: {{#sub:Icecream|3|0}}, cream döndürür, {{#sub:Icecream|0|3}}, Ice döndürür.
  • Eğer start negatif length parametresi ile sondan kesmenin ötesinde bir konumu ifade ediyorsa, boş bir dizge döndürülecektir.
    • Örnek: {{#sub:Icecream|3|-6}} boş bir dize döndürür.
  • Bu işlev, UTF-8 çok baytlı karakterlerle güvenlidir. Örnek: {{#sub:Žmržlina|3}}, žlina döndürür.
  • #len olduğu gibi, ‎<nowiki> ve diğer etiket uzantıları, karakter konumu açısından 1 uzunluğa sahip olarak değerlendirilir. Örnek: {{#sub:<nowiki>Bu bir </nowiki>testir|1}}, test döndürür.

#pad edit

#pad ayrıştırıcı işlevi ParserFunctions uzantısıyla BİRLEŞTİRİLMEDİ. Bir alternatif olarak, MediaWiki çekirdeği tarafından sağlanan padleft ve padright ayrıştırıcı işlevlerine bakın.
  1. pad işlevi, belirli bir genişliğe uzatılmış verilen dizeyi döndürür. Sözdizimi:
{{#pad:dize|length|padstring|direction}}

length parametresi, döndürülen dizenin istenen uzunluğunu belirtir.

padstring parametresi belirtilirse, eksik olan boşluğu doldurmak için kullanılır. Gerektiği kadar çok kez kullanılacak tek bir karakter veya gerektiği kadar çok kez birleştirilecek ve ardından gerekli uzunluğa kırpılacak bir dize olabilir. Örnek: {{#pad:Ice|10|xX}}, xXxXxXxIce döndürür.

Eğer padstring belirtilmemişse, boşluk bırakılır.

direction parametresi, belirtilmişse, şu değerlerden biri olabilir:

  • left - dolgu, dizenin sol tarafında olacaktır. Örnek: {{#pad:Ice|5|x|left}}, xxIce döndürür.
  • right - dolgu, dizenin sağ tarafında olacaktır. Örnek: {{#pad:Ice|5|x|right}}, Icexx döndürür.
  • center - dize, döndürülen dizede ortalanacaktır. Örnek: {{#pad:Ice|5|x|center}}, xIcex döndürür.

direction belirtilmezse, dolgu dizenin sol tarafında olacaktır.

Döndürülen değer, length karakterlerine uzatılan ve eksik parça(ları)yı doldurmak için padstring kullanılarak verilen dizedir. Verilen dize zaten length uzunsa, ne uzatılır ne de kısaltılır.

Notlar:

  • length için izin verilen maksimum değer, $wgStringFunctionsLimitPad genel ayarıyla sınırlıdır.
  • Bu işlev, UTF-8 çok baytlı karakterlerle yalnızca kısmen güvenlidir. Bu karakterler, orijinal dizede görünüyorlarsa uygun şekilde ele alınır, ancak dolguda görünüyorlarsa dikkate alınmaz. Örnekler:
    • {{#pad:Zmrzlina|12|z}}, zzzzZmrzlina döndürür
    • {{#pad:Žmržlina|12|z}}, zzzzŽmržlina döndürür
    • {{#pad:Žmržlina|12|ž}}, žžŽmržlina döndürür (gerekli dolgu karakterlerinin yalnızca yarısı kullanıldığından, belirtilen uzunluktan daha az dolgulu)
  • Dolguda ‎<nowiki> gibi etiketlere ve diğer etiket uzantılarına izin verilmez. Eğer padstring böyle bir etiket içeriyorsa, kesilecektir.

#replace edit

#replace ayrıştırıcı işlevi, 1.2.0 sürümünden itibaren ParserFunctions uzantısıyla birleştirildi
  1. replace işlevi, bir arama teriminin tüm oluşumları yerine bir ikame terimle değiştirilen verilen dizeyi döndürür.
{{#replace:dize|arama terimi|yerleştirme terimi}}

arama terimi belirtilmemiş veya boş ise tek bir boşluk aranacaktır.

değiştirme terimi belirtilmemişse veya boşsa, arama teriminin tüm tekrarları dizeden kaldırılacaktır.

Notlar:

  • Bu işlev büyük/küçük harfe duyarlıdır.
  • arama teriminin izin verilen maksimum uzunluğu, $wgStringFunctionsLimitSearch genel ayarıyla sınırlıdır.
  • değiştirme terimi için izin verilen maksimum uzunluk, $wgStringFunctionsLimitReplace genel ayarıyla sınırlıdır.
  • değiştirme terimi bir boşluk olsa bile boş bir dize kullanılır. Bu, MediaWiki ayrıştırıcısının bir yan etkisidir. değiştirme terimi olarak bir boşluk kullanmak için, onu nowiki etiketlerine koyun.
    • Örnek: {{#replace:My_little_home_page|_|<nowiki> </nowiki>}}, My little home page döndürür.
    • Bu işe yaramazsa, kendi kendine kapanan iki etiketle {{#replace:My_little_home_page|_|<nowiki/> <nowiki/>}} deneyin.
    • Değiştirme teriminde 'nowiki'nin kabul edilebilir tek kullanımı bu' olduğuna dikkat edin, aksi takdirde nowiki, çıkışa keyfi olarak çok sayıda karakter enjekte ederek $wgStringFunctionsLimitReplace atlamak için kullanılabilir. Bu nedenle, değiştirme terimi içindeki tüm <nowiki> veya diğer etiket uzantıları boşluklarla değiştirilir.
  • Bu işlev, UTF-8 çok baytlı karakterlerle güvenlidir. Örnek: {{#replace:Žmržlina|ž|z}}, Žmrzlina döndürür.
  • Tek bir metin dizesindeki birden çok öğenin değiştirilmesi gerekiyorsa, Extension:ReplaceSet de düşünülebilir. Bir dizi değiştirme için bir ayrıştırıcı işlevi ekler.
Büyük/küçük harfe duyarsız değiştirme

Şu anda sözdizimi, büyük/küçük harf duyarlılığı ayarını değiştirmek için bir anahtar sağlamaz. Ancak, biçimlendirmenin sihirli kelimelerini (örn. {{lc:your_string_here}}) kullanabilirsiniz. Örneğin, "Category:" sözünü büyük/küçük harfe bakılmaksızın dizeden kaldırmak istiyorsanız şunu yazabilirsiniz:

{{#replace:{{lc:{{{1}}}}}|category:|}}

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 edit

#explode ayrıştırıcı işlevi, 1.2.0 sürümünden itibaren ParserFunctions uzantısıyla birleştirildi
  1. explode işlevi verilen dizgiyi parçalara böler ve parçalardan birini döndürür. Sözdizimi:
{{#explode:dize|sınırlayıcı|pozisyon|sınır}}

sınırlayıcı parametresi, dizeyi parçalara bölmek için kullanılacak bir dizgiyi belirtir. Bu sınırlayıcı dize herhangi bir parçanın parçası değildir ve iki sınırlayıcı dize yan yana geldiğinde aralarında boş bir parça oluştururlar. Bu parametre belirtilmezse tek boşluk kullanılır. sınır parametresi, bağımsız StringFunctions sürümünde değil, yalnızca ParserFunctions'da mevcuttur ve kalan tüm metin son bölüme dahil edilerek değerin bölündüğü parça sayısını sınırlamanıza olanak tanır.

pozisyon parametresi hangi parçanın iade edileceğini belirtir. Parçalar 0'dan sayılır. Bu parametre belirtilmezse ilk parça kullanılır (0 numaralı parça). pozisyon olarak negatif bir değer kullanıldığında, taşlar sondan sayılır. Bu durumda parça numarası -1, son parça anlamına gelir. Örnekler:

  • {{#explode:Wales, Jimmy|,}}, Wales döndürür.
  • {{#explode:And if you tolerate this| |2}}, you döndürür.
  • {{#explode:String/Functions/Code|/|-1}}, Code döndürür.
  • {{#explode:Split%By%Percentage%Signs|%|2}}, Percentage döndürür.
  • {{#explode:And if you tolerate this thing| |2|3}}, you tolerate this thing döndürür.

Döndürülen değer, pozisyon parçadır. pozisyon belirttiğinden daha az parça varsa, boş bir dize döndürülür.

Notlar:

  • Bu işlev büyük/küçük harfe duyarlıdır.
  • sınırlayıcı izin verilen maksimum uzunluğu, $wgStringFunctionsLimitSearch genel ayarıyla sınırlıdır.
  • Bu işlev, UTF-8 çok baytlı karakterlerle güvenlidir. Örnek: {{#explode:Žmržlina|ž|1}}, lina döndürür.

#urlencode: ve #urldecode: edit

#urlencode ayrıştırıcı işlevleri, ParserFunctions uzantısıyla BİRLEİŞTİRİLMEDİ. Alternatif olarak, MediaWiki çekirdeği tarafından sağlanan urlencode ayrıştırıcı işlevine bakın. #urldecode başlangıçta ParserFunctions ile birleştirilmedi, ancak daha sonra eklendi (2010'da 1b75afd18d3695bdb6ffbfccd0e4aec064785363) tarafından eklendi.

Bu iki işlev birlikte çalışır: #urlencode bir dizeyi URL güvenli sözdizimine dönüştürür ve #urldecode böyle bir dizeyi geri dönüştürür. Sözdizimi:

{{#urlencode:değer}}
{{#urldecode:değer}}

Notlar:

  • Bu işlevler, PHP'nin urlencode() ve urldecode() işlevlerini doğrudan açığa çıkararak çalışır.
  • Bir sayfanın içindeki çengel için {{#urlencode}} yerine {{anchorencode}} kullanın. {{anchorencode}} çağrısının sonuçları, [[#link]] sözdizimi ile oluşturulan sayfa içi kaynakça ile uyumluyken, {{#urlencode}} oluşturulan değerler mutlaka böyle değildir.
  • urlencode, Extension:ParserFunctions/tr içine entegre edilmiştir. ParserFunction uzantısında işlevin {{#urlencode:value}} yerine {{urlencode:value}} ile çağrıldığını unutmayın. ParserFunctions uzantısı, 1.18 sürümünden itibaren MediaWiki'ye entegre edilmiştir; örnekler için Help:Sihirli kelimeler sayfasına bakın.
  • urldecode tam tersi şekilde çalışır ve URL kodlama dizelerini okunabilir dizelere dönüştürür. Bir karakter kodu kaynağı www.w3schools.com adresinde bulunabilir.

Ayrıca bakınız edit

Not edit

Not: Wikimedia kullanıcıları
2013'te bu uzantının Wikimedia wiki'lerinde asla etkinleştirilemeyeceği belirlendi (phabricator:T8455 sayfasına bakın). Geçici bir çözüm olarak, Dize-işleyen şablonlar veya Module:String kullanın.