コンテンツにスキップ

Help:条件文

H:PFから転送)

ウィキペディア日本語版ヘルプページです。元文書はメタウィキヘルプです。


この文書は、テンプレート等における条件文やその他の関数を定義しているMediaWikiParserFunctions拡張機能を説明する文書です。条件文はすべて次のような文法を持っています。

{{#関数名: 引数 1 | 引数 2 | 引数 3...}}

なお、ParserFunctions 拡張機能以外の関数は Help:マジックワード の方に記載されていますので、あわせて参照してください。

各関数

[編集]

このモジュールには現在、expr, if, ifeq, ifexist, ifexpr, switch, time, timel, rel2abs, titleparts, iferror の 11 の関数が定義されています。

文法の説明は、

{{#expr: <数式> }}

と書き、<> 内にはそこに書くべき内容を記しています。

使用例として

{{#expr: 1 + 2 }} = 3 (1 + 2 = 3)

と書き、使用例 = 出力 (理由)と記しています。

expr

[編集]

expr 関数は、数式の演算を行います。文法は、

{{#expr: <数式> }}

文字列形式

[編集]

数値として扱える文字列以外は取り扱えません。一部はFormatnumで数値に変換が可能。

数値形式

[編集]

サポートしている数値形式は、

形式
数字のみ 1234567890 {{#expr: 1234567890 }} = 1234567890
カンマ付き数字 1,234,567,890 Formatnumを使用することで可能
{{#expr: {{Formatnum:1,234,567,890|R}} }} = 1234567890
小数 123.456 {{#expr: 123.456 }} = 123.456
分数 1 + 2/3 {{#expr: 1 + 2/3 }} = 1.6666666666667
指数表記 123.456e7 {{#expr: 123.456e7 }} = 1234560000
指数表記 123.45678e12 {{#expr: 123.45678e12 }} = 1.2345678E+14
指数表記 123.45678E-12 {{#expr: 123.45678E-12 }} = 1.2345678E-10
指数表記 1.23456×109 乗算演算子とべき乗演算子を使用することで可能
{{#expr: 1.23456 * 10^9}} }} = 1234560000

演算子の優先順位

[編集]

サポートしている演算子の優先順位は、

演算子 演算
( ) 優先 {{#expr: (30 + 7) * 7 }} = 259
+ 正符号 {{#expr: 30 * +7 }} = 210
- 負符号 {{#expr: 30 * -7 }} = -210
not 論理否定 {{#expr: not 0 * 7 }} = 7
{{#expr: not 30 * 7 }} = 0
* 乗算 {{#expr: 30 * 7}} = 210
/ 除算(div と全く同じ) {{#expr: 30 / 7}} = 4.2857142857143
div 除算(/ と全く同じ) {{#expr: 30 div 7}} = 4.2857142857143
mod 剰余 {{#expr: 30 mod 7}} = 2
+ 加算 {{#expr: 30 + 7}} = 37
- 減算 {{#expr: 30 - 7}} = 23
round 四捨五入
round の右に小数点以下の桁数を入れる
{{#expr: 30 / 7 round 7}} = 4.2857143
= 等号、左右は等しい {{#expr: 30 = 7}} = 0[正しくない]
<> 不等号、左右は等しくない {{#expr: 30 <> 7}} = 1[正しい]
!= 不等号、左右は等しくない、排他的論理和 {{#expr: 30 != 7}} = 1
< 小なり、左は右より小さい {{#expr: 30 < 7}} = 0
> 大なり、左は右より大きい {{#expr: 30 > 7}} = 1
<= 左は右以下 {{#expr: 30 <= 7}} = 0
>= 左は右以上 {{#expr: 30 >= 7}} = 1
and 論理積 {{#expr: 30 and 7}} = 1
or 論理和 {{#expr: 30 or 7}} = 1

取り扱える他の演算子

[編集]

この他、以下の演算子も使用できます。

演算子 演算
^ べき乗 {{#expr: 4^2}} = 16
{{#expr: 2^7}} = 128
ln 自然対数 {{#expr: ln2}} = 0.69314718055995
abs 絶対値。符号の除去 {{#expr: abs1.2}} = 1.2
{{#expr: abs-1.2}} = 1.2
trunc 小数点以下切り捨て {{#expr: trunc1.5}} = 1
{{#expr: trunc-1.2}} = -1
floor 。引数以下の最大の整数 {{#expr: floor 1.2}} = 1
{{#expr: floor -1.2}} = -2
ceil 天井。引数より大きい最小の整数 {{#expr: ceil 1.2}} = 2
{{#expr: ceil -1.2}} = -1
sin 三角関数 {{#expr: sin .1}} = 0.099833416646828
{{#expr: sin(30*pi/180)}} = 0.5
cos
tan
asin
acos
atan

真偽を求める演算子は、偽の時に 0 を、真の時に 1 を返します。

数は十進法で、小数点は "." で表します。E を用いた指数表記も使えます。内部の実装は IEEE 754倍精度小数です。

使用例として、 {{#expr: (100 - 32) / 9 * 5 round 0 }} = 38 これは、華氏温度を摂氏温度に変換し、整数に四捨五入します。

平方根

[編集]

平方根を求めるときは Template:Root を利用します。

例: {{root|2}} = 1.4142135623731

if

[編集]

if は、「もし ... ならば ... さもなくば ...」の構文です。文法は、

{{#if: <もし文> | <ならば文> | <さもなくば文> }}
{{#if: <もし文> | <ならば文> }}

<もし文> が、空文字列ではなくホワイトスペースのみでもない場合は、<ならば文> が返されます。<もし文> が空文字列もしくはホワイトスペースのみであったならば、<さもなくば文> が返されます。<さもなくば文> は省略できます。省略された場合には、<さもなくば文> の代わりに空文字列が返されます。

テンプレートの引数が定義されている場合とされていない場合で処理を分けることができます。例えば、引数が定義されていればそれを、されていなければ 0 を返したい場合は、

{{#if: {{{引数|}}} | {{{引数}}} | 0 }}

とすれば、テンプレート呼び出しの際に、

{{テンプレート|引数=なにがし}}

とあれば「なにがし」を返し、

{{テンプレート}}

または

{{テンプレート|引数=}}

とあれば 0 を返します。 定義されていない場合に、何も返さない(空文字列を返す)としたければ、

{{#if: {{{引数|}}} | {{{引数}}} }}

とします。定義されている場合に 1、そうでない場合に 0 を返したければ、

{{#if: {{{引数|}}} | 1 | 0 }}

とします。 なお、上記の {{{引数|}}} 内の "|" は、引数が指定されていないときのデフォルト値指定を示す記号です。ここでは "|" の後に何も指定されていないため、"引数" が定義されていない場合には空文字列を返し、"引数" が定義されている場合はその値を返します。そのため、#if: {{{引数|}}} という構文を、"引数" が定義されているか否かの判定に用いることができるのです。これを利用すると、

{{#if: {{{引数A|{{{引数B|}}}}}} | 1 | 0 }}

という複雑な判定文を作ることができます。この意味は、「"引数A" か "引数B" のいずれかが定義されていれば 1 を、どちらも定義されていなければ 0 を返す」になります。

ifでは、等号その他の数学的な演算は一切サポートされていないことに注意してください。例えば、

{{#if: 1 = 2 |はい|いいえ}} = はい (1 = 2 は空文字列でないから)

となります。if文は「もし定義されていたら」という条件が意図されています。もし、文字列を比較するのならば、ifeq を使ってください。また、数を比較するのなら、 ifexpr を使ってください。

ifeq

[編集]

ifeq は2つの文字列を比較し、比較の結果に応じて異なる文字列を返します。文法は、

{{#ifeq: <文字列1> | <文字列2> | <等しいときに返す文> | <等しくないときに返す文> }}
{{#ifeq: <対象文字列> | <比較文字列>
  | <等しいときに返す文>
  | <等しくないときに返す文>
}}

数値と見なされる文字列は、数値として判断されます。

  • {{#ifeq: 007 | 7 | 同じ | 違う }} = 同じ
  • {{#ifeq: +7 | 7 | 同じ | 違う }} = 同じ
  • {{#ifeq: 0 | -0 | 同じ | 違う }} = 同じ
  • {{#ifeq: 1e2 | 100 | 同じ | 違う }} = 同じ
  • {{#ifeq: 0x10 | 16 | 同じ | 違う }} = 違う

(例外) {{#expr:}} で数値として扱える e、E、pi、PI は、文字として扱われます。

  • {{#ifeq: e | E | 同じ | 違う }} = 違う
  • {{#ifeq: pi | PI | 同じ | 違う }} = 違う

ダブルクオーテーション (") などの文字を追加して数値でなくすと、文字列として比較します。

  • {{#ifeq: "007 | "7 | 同じ | 違う }} = 違う
  • {{#ifeq: "+007 | "7 | 同じ | 違う }} = 違う
  • {{#ifeq: "1e2 | "100 | 同じ | 違う }} = 違う
  • {{#ifeq: "0x10 | "16 | 同じ | 違う }} = 違う

大文字と小文字は区別されます。

  • {{#ifeq: A | a | 同じ | 違う }} = 違う

但し、数値とみなされる場合、大文字と小文字は区別されません。

  • {{#ifeq: 1e2 | 1E2 | 同じ | 違う }} = 同じ
  • {{#ifeq: 0x1 | 0X1 | 同じ | 違う }} = 違う

ifexist

[編集]

ifexist は、指定されたページが存在するかどうか(リダイレクトを含む)によって、2つのうちの1つの結果を返します。

{{#ifexist: <ページ名> | <あるときに返す文> | <ないときに返す文> }}

1つ目のパラメータは、調べたいページ名です。2つ目は存在している場合に返す文、3つ目は存在しない場合に返す文です。調べたいページ名が有効なタイトルでなければ、存在しない場合の文が返されます。例えば、

  • {{#ifexist:Foo|Bar|RFC 3092}} = Bar (Foo は存在するので)
  • {{#ifexist:Help:条件文|はい|いいえ}} = はい (Help:条件文は存在するので)
  • {{#ifexist:m:Help:Calculation|はい|おっと}} = おっと (m:Help:Calculationは存在しますが、これはウィキペディア日本語版の外(メタウィキメディア)のページです)

となります。

言語間リンクとそれ以外を区別するには {{If interwiki link}}も使えます。

ifexpr

[編集]

ifexpr は、数式を評価(計算)し、その結果に従って2つの文字列からひとつを返します。

{{#ifexpr: <数式> | <真の場合に返す文> | <偽の場合に返す文> }}

数式の結果が 0 または空文字列であった場合には <偽の場合に返す文> が返され、そのほかの場合には <真の場合に返す文> が返されます。数式の文法は expr と同じです。

  • {{#ifexpr: {{ns:0}} | Toast | or else }} = or else{{ns:0}} は空文字列だから)

計算が行えない場合や不正な計算の場合はエラー文字列を返します。(参考:ゼロ除算

  • {{#ifexpr:1/0|0以外|0である}} = 0 で除算しました。
  • {{#ifexpr:1/n|0以外|0である}} = 構文エラー:「n」を認識できません。

<真の場合に返す文>も<偽の場合に返す文>も省略すると、何も返しません(空文字列を返します。)

  • {{#ifexpr:1/2}} =

省略した場合でも数式の評価は行います。

  • {{#ifexpr:1/0}} = 0 で除算しました。
  • {{#ifexpr:1/n}} = 構文エラー:「n」を認識できません。

評価結果を更に評価させる場合は結果に注意してください。

  • {{#if: {{#ifexpr:1/0}} | エラー文字列 | 空 }} = エラー文字列
  • {{#if: {{#ifexpr:1/n}} | エラー文字列 | 空 }} = エラー文字列
  • {{#if: {{#ifexpr:1E4}} | エラー文字列 | 空 }} = 空
  • {{#if: {{#ifexpr:a=b}} | エラー文字列 | 空 }} = エラー文字列
  • {{#if: {{#ifexpr:1=2}} | エラー文字列 | 空 }} = 空

switch

[編集]

switch は、ひとつの値(基準値)を他の複数の値と比較し、一致するものが見つかったら該当の値を返します。文法は基本的に、

{{#switch: <基準値>
| <値1> = <返す文1>
| <値2> = <返す文2>
| ...
| <値n> = <返す文n>
| <その他の時に返す文>
}}

switch はそれぞれの値を、基準値と一致するものがみつかるまでそれぞれの値をずっと探そうとします。もし見つかったら、値に相当する文(等号のあとにある文)を返します。もし見つからなかったら、最後の等号のない項を返します。もし、この項にどうしても等号を含めて書く必要がある場合には、#default を用います。

{{#switch: <基準値>
| <値> = <返す文>
| #default = <その他の時に返す文>
}}

同じ返す文を何度も書くのを省略するため、値が「通り抜ける」構造になっていることに気をつけてください。たとえば、

{{#switch: <基準値>
| <値1>
| <値2>
| <値3> = <返す文3>
| ...
| <値n> = <返す文n>
| <その他の時に返す文>
}}

この例では、値1と値2に等号が付いていません。もしそれらに一致したら、返す文3が返されます。つまり、等号を省略した場合には、次の最初の等号の後の文が返されるのです。

switchifeq と同様、数値と見なされる文字列は、数値として判断されます。次の結果に注意してください。

  • {{#switch: 007 | 7=7にマッチ | 007=007にマッチ | #default=マッチなし }} = 7にマッチ
  • {{#switch: "007" | 7=7にマッチ | 007=007にマッチ | #default=マッチなし }} = マッチなし
  • {{#switch: "007" | 7=7にマッチ | "007"="007"にマッチ | #default=マッチなし }} = "007"にマッチ
  • {{#switch: 16 | 0x10=0x10にマッチ | #default=マッチなし }} = マッチなし
  • {{#switch: 0x10 | 16=16にマッチ | #default=マッチなし }} = マッチなし
  • {{#switch: "0x10" | 16=16にマッチ | 0x10=0x10にマッチ | "0x10"="0x10"にマッチ | #default=マッチなし }} = "0x10"にマッチ

大文字小文字を無視するためには、基準値と値に必要に応じて {{lc:}} または {{uc:}} を使い、小文字または大文字にそろえます。

  • {{#switch: A | a=小文字 | A=大文字 }} = 大文字
  • {{#switch: A | a=小文字 | 大文字 }} = 大文字
  • {{#switch: a | a=小文字 | 大文字 }} = 小文字
  • {{#switch: {{uc:a}} | a=小文字 | 大文字 }} = 大文字
  • {{#switch: {{lc:A}} | a=小文字 | 大文字 }} = 小文字

time

[編集]

time は、日付や時間の書式を指定して出力する関数です。

文法は

{{#time: <書式> }}
{{#time: <書式> | <日付/時間> }}
{{#time: <書式> | <日付/時間> | <言語コード> }}

のいずれかです。

<日付/時間> が指定されていない場合には、コードがHTMLに変換された時刻が用いられます(タイムゾーンはUTC)。ページのキャッシュに注意してください。記事が閲覧される時刻と1週間以上の時差が出る場合もあるでしょう。最新にするには、その都度更新する必要があるかもしれません。なにも変更しないで投稿し直す(いわゆるゼロ編集)、action=purge をURLのオプションに付ける、閲覧者のオプションで「ページをキャッシュしない」にする、などで更新できます。参考:Template:purgeキャッシュを破棄

以下の <書式> の指定文字は、PHPの指定文字(date())と同じ意味を持っています。国際化(言語と地域による異なった出力)を別にすれば、PHPの動作との重要な相違点は、エラーの考え方と出力です。すべての書式の指定文字は言語に従って文字列を返します。もし、そうしたくないときには、指定文字 xn を前に付けてください。

コード 説明 出力(例) 現在の出力
Y 4桁の西暦年。 2006 2024
y 2桁の西暦年 00 から 99 24
L 閏年かどうかの判定。 閏年なら 1 、そうでなければ 0 1
o ISO 8601での暦週が属する暦年。 2013 2024
n の数字。ひと桁の時も0が前に付かない。 1 から 12 11
m 月の数字。ひと桁の時は0が前に付く。 01 から 12 11
M 月の短縮形。たいていは国際化されている。 1月 から 12月 11月
F 月。たいていは国際化されている。 1月 から 12月 11月
t 月の日数。 28 から 31 30
W ISO 8601形式の週数。ひと桁の時は0が前に付く。 01 から 53 45
j 。ひと桁の時も0が前に付かない。 1 から 31 4
d 日。ひと桁の時は0が前に付く。 01 から 31 04
z 0から数えたその年の通算日数。 0 から 365 308
D 曜日の短縮形。まれに国際化されている。[t 1] 月 から 日
l 曜日。まれに国際化されている。[t 1] 月曜日 から 日曜日 月曜日
w 曜日の数値(アメリカ式)。[t 1] 0(日曜日) から 6(土曜日) 1
N ISO 8601形式の曜日の数値。[t 1] 1(月曜日) から 7(日曜日) 1
a 午前午後を am/pm で。 am または pm am
A 午前、午後を AM/PM で。 AM または PM AM
g 12時間制の時刻。ひと桁の時は0が前に付かない。 1 から 12 1
h 12時間制の時刻。ひと桁の時は0が前に付く。 01 から 12 01
G 24時間制の時刻。ひと桁の時は0が前に付かない。 0 から 23 1
H 24時間制の時刻。ひと桁の時は0が前に付く。 00 から 23 01
i 。ひと桁の時は0が前に付く。 00 から 59 58
s 。ひと桁の時は0が前に付く。 00 から 59 51
U 1970年1月1日 00:00:00 (GMT) からの秒数(UNIX時間うるう秒は考えない)。 1730685531
c ISO 8601形式の日付。Y-m-dTH:i:sPと同じ結果を返す。 2024-11-04T01:58:51+00:00
r RFC 2822[1]形式の日付。[t 1] D, j M Y H:i:s Oと同じ結果を返す。 Mon, 04 Nov 2024 01:58:51 +0000
e タイムゾーン識別子。 UTC UTC
I 夏時間かどうか。 0または1 0
O コロンなしのグリニッジ標準時との時差 +0000 +0000
P コロン付きのグリニッジ標準時との時差。 +00:00 +00:00
T タイムゾーンの略称。 UTC UTC
Z タイムゾーンの秒単位の時差。 0 0
  1. ^ a b c d e PHP 5.2以前では、1752年以前の曜日は取得できない。イギリスでのグレゴリオ暦導入が1752年9月で、ユリウス暦の正しい曜日が返らないことを考慮した処理。PHP 5.3以降はグレゴリオ暦をさかのぼって適用した場合の曜日が返る。

以下の <書式> の指定文字は、PHPの文法にはない拡張された文字です。

コード 説明
xn 数字を返すコードの前に置いて、それがASCII数字となるようにする。例えば、ヒンディー語環境において、{{#time:H, xnH | 06:30}} は ०६, 06を返す。
xN これが書かれてより後のコードが半角数字となるようにする。 xn と似ているが、こちらは行の最後まで、もしくはもう一度 xN が現れるまでの全てのコードに作用する。
xr 数字を返すコードの前に置いて、それがローマ数字となるようにする。3000まで対応。{{#time:xrH | 06:30}} は VI を返す。
xg 月の名前の所有格。
xx 文字の「x」そのもの。
xmj ヒジュラ暦の日。
xmF ヒジュラ暦の月。
xmn ヒジュラ暦の月の数字。
xmY ヒジュラ暦の4桁の年。
xij イラン暦の日。
xiF イラン暦の月。
xin イラン暦の月の数字。
xiY イラン暦の4桁の年。
xiy イラン暦の2桁の年。
xjj ユダヤ暦の日。
xjF ユダヤ暦の月。
xjt ユダヤ暦の月の日数。
xjx ユダヤ暦の月の所有格。
xjn ユダヤ暦の月の数字。
xjY ユダヤ暦の4桁の年。
xkY タイ太陽暦の4桁の年。
xoY 民国紀元の年。
xtY 日本の元号による年。

上記以外の文字は、そのまま出力されます。また、上記の文字をそのまま文字として出力する2つの方法があります。

  1. ダブルクオート (") に囲まれた文字は、そのまま出力されます。このとき、ダブルクオートそのものは出力されません。ダブルクオートが奇数の時、最後のダブルクオートはそのまま出力されます。
    • {{#time: Fには雪が"1m積もった。" |2006-02-12}} → 2月には雪が1m積もった。
    • {{#time:i's" |0:20:11}} → 20'11"
  2. PHPのdate()同様、エスケープ文字 \(円コード、バックスラッシュともいいます)は次の文字をエスケープします。\H は文字 H を出力し、\" は文字 " を出力し、\\ は文字 \ 自体を出力します。
    • {{#time: "The month is" F}} → The month is 11月
    • {{#time: \"The month is\" \F}} → "UTC01UTC 112024113001 5851" F
    • {{#time:\\123}} → \123

この関数の利用者からの希望により、<書式> の指定文字は今後追加される可能性があります。PHP の書式の指定文字のより完全な実装と、拡張された x コードの両方です。

引数 <日時/時間> は、PHPの strtotime() で使われている文字列と全く同じです。それは December 112006-12-11 のような絶対的な日付や時刻と、時差やタイムゾーンの計算に便利な +10 hours のような相対的な日数、時間の両方をサポートしています。より詳しくはPHP: サポートする日付と時刻の書式 - Manualをご覧ください。

  • {{#time:Y年Fj日|-14 days}} → 2024年10月21日(14日前)
  • {{#time:H:i|+9 hours}} → 10:58 (日本時間/UTC+9
  • {{#time:H:i|8:15 +6 hours}} → 14:15 (6時間後)
  • {{#time:xtY年n月j日 (D) H:i:s (T)}} → 令和6年11月4日 (月) 01:58:51 (UTC) (ページの生成日時、キャッシュされていることがあります)
  • {{#time:i′s″}} → 58′51″

扱える日付・時刻の範囲は、PHPのバージョンによって異なります(インストールされているPHPのバージョンは特別:バージョン情報で確認してください)。PHP 5.1以前では32ビットのUNIX時間の範囲、つまり 1970年1月1日 00:00:01 から 2038年1月19日 03:14:07 までを扱えます(2038年問題も参照)。PHP 5.2から5.3.5までは 111年1月1日 00:00:00 から 9999年12月31日 23:59:59 までを扱えます。ただし、1582年10月14日以前の日付は、グレゴリオ暦の導入前にさかのぼってグレゴリオ暦を適用した場合のものなので、そのままユリウス暦の日付として使うことはできません(たとえば、1500年2月29日を表示できません)。

timel

[編集]

ウィキペディア日本語版では現在、タイムゾーンUTCに設定されているため、#timel#timeと同じ結果を返します。

rel2abs

[編集]

rel2abs は、サブページページ名相対パス英語版日本語版を絶対パスに変換します。

{{#rel2abs: パス }}
{{#rel2abs: パス | 基準パス }}

相対パスは、/./../ のいずれかで始まるか、/..//. のいずれかを含んでいるか、... だけであるかのどれかです。基準パスが与える場合には、絶対パスで与えなければなりません。

例:

  • Help:Foo/bar を基準に、{{#rel2abs: ../baz }} とすると、Help:Foo/baz が返されます。
  • Help:Foo を基準に、 {{#rel2abs: ../baz }} とすると、baz が返されます。
  • Help:Foo を基準に、 {{#rel2abs: ../../baz }} とすると、Error: Invalid depth in path: "Help:Foo/../../baz" (tried to access a node above the root node)" となります。
  • {{#rel2abs: ../baz | Help:Bar/foo }} とすると、Help:Bar/baz が返されます。
  • {{#rel2abs: Help:Foo/bar/../baz }} とすると、Help:Foo/baz が返されます。

そのパスが実際に存在するかどうかは確認しません。そのためには {{ #ifexist }} と併用してください。

例:

{{#ifexist: {{#rel2abs: .. }} | '..' が存在します。 | '..' は存在しません。}}

titleparts

[編集]

titleparts は、サブページを持つページ名の表示を制御します[注釈 1]

{{#titleparts: <ページ名> | <セグメント数> | <開始点> }}

<開始点>で指定した階層から<セグメント数>の深さの階層までページ名を表示します。<開始点>が指定されていなければ、1 とみなされます。

セグメント数だけ指定した例

  • {{#titleparts:Help:Link/a/b|0|}} = Help:Link/a/b
  • {{#titleparts:Help:Link/a/b|1|}} = Help:Link
  • {{#titleparts:Help:Link/a/b|2|}} = Help:Link/a
  • {{#titleparts:Help:Link/a/b|3|}} = Help:Link/a/b
  • {{#titleparts:Help:Link/a/b|4|}} = Help:Link/a/b

開始点も指定した例

  • {{#titleparts:Help:Link/a/b|1|2}} = a
  • {{#titleparts:Help:Link/a/b|2|2}} = a/b
  • {{#titleparts:Help:Link/a/b|1|3}} = b

マイナスを引数にとる例

  • {{#titleparts:Help:Link/a/b|-1|}} = Help:Link/a
  • {{#titleparts:Help:Link/a/b|1|-1}} = b

iferror

[編集]

iferror は、条件文などのエラーがあった時に指定した文字列を返す関数です。

{{#iferror:<条件文>|<エラー>|<成功>}} 

とすれば、条件文に<strong class="error">が含まれている時に反応します。この HTML タグは #expr, #ifexpr, #time, #rel2absおよび、いくつかの他のMediaWikiの動作によって出力されます[2]

  • {{#iferror:{{#expr:1+1}}|bad input|valid expression}} = valid expression
  • {{#iferror:{{#expr:1+Z}}|bad input|valid expression}} = bad input

<エラー>と<成功>の指定は任意です。<成功>の引数を指定しなければ、問題がない時には<条件文>が返されます。<エラー>の引数も指定しなければ、エラー時にはなにも返されず、問題がない時にのみ<条件文>が返されます。

  • {{#iferror:{{#expr:1+1}}|bad input}} = 2
  • {{#iferror:{{#expr:1+Z}}|bad input}} = bad input
  • {{#iferror:{{#expr:1+1}}}} = 2
  • {{#iferror:{{#expr:1+Z}}}} =

その他

[編集]

カテゴリ:マジックワード・条件文テンプレートに、これらを利用してより複雑な条件を得ることの出来るテンプレートがあります。

注意

[編集]

subst

[編集]

subst を条件文で用いたい場合には、 subst:# の間に空白を入れないでください。H:SUBST も参照してください。

[編集]

条件文の中にパイプ構文の表を直接埋め込むことはできません。パイプ構文で用いる | が条件文やテンプレートの引数の区切りと見なされてしまうためです。これを避けるには、{{!}}, {{!!}}, {{!-}} を用いてください。それぞれ |, ||, |- に変換されます。{{{!}} と {{!}}} はそれぞれ表の開始と終了を示す {||} になります。

HTML のタグで表を作ることもできます。

脚注

[編集]

注釈

[編集]
  1. ^ r22711にて導入、 r28708にてマイナスをとれるように。

出典

[編集]
  1. ^ 旧RFC 2822(英語と日本語)
  2. ^ r29774, r29775, r29877を参照。

関連項目

[編集]

外部リンク

[編集]