为啥 SSI 条件!= || != 不起作用?
Posted
技术标签:
【中文标题】为啥 SSI 条件!= || != 不起作用?【英文标题】:Why SSI condition != || != doesn't work?为什么 SSI 条件!= || != 不起作用? 【发布时间】:2012-08-23 13:46:07 【问题描述】:我无法使用这个条件表达式
<!--#if expr="$DOCUMENT_NAME!=index.html || $DOCUMENT_NAME!=links.html" -->
虽然在=
之前没有!
的这个完美无缺
<!--#if expr="$DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html" -->
有什么问题?我没有收到任何错误,只是 !=
不起作用,尽管 ||
在其他条件下但适用于单一条件。
【问题讨论】:
不工作 - 这是否意味着语法错误或给你意想不到的结果? 我没有错误。单个条件表达式有效<!--#if expr="$DOCUMENT_NAME!=index.html" -->
。但是,如果我添加||
和其他条件,则没有任何工作,也没有 SII 错误。
虽然||
但=
而不是!=
的条件相同。有什么奇怪的?!
【参考方案1】:
这是因为=
和!=
几乎不是同一个运算符。请注意,De Morgan's law(我也是explained in this old post),
a != b || c != d
等价于
a = b && c = d
对于x = a && x = b
a != b
,这从不正确。
更改二元运算符需要更改条件以使其等效。
因此,按照上述逻辑,
$DOCUMENT_NAME!=index.html || $DOCUMENT_NAME!=links.html
等价于
$DOCUMENT_NAME=index.html && $DOCUMENT_NAME=links.html
其中不能为真,因为 $DOCUMENT_NAME 可以是“index.html”或“links.html”但不能同时是。 p>
但是,第二个 sn-p,
$DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html
“有效”,因为没有上面提到的逻辑永远不正确的谬误。当 $DOCUMENT_NAME 是“index.html”或“links.html”时,这将是真的。
某些语言/价值观会违反上述等价性......但这是另一个话题。
【讨论】:
感谢您的回复。但是,我仍然有点困惑。那么如何以其他方式实现这个想法呢?基本上我在标题中有一个脚本,需要在所有页面上显示,但不是在 index.html、links.html 以及我想忽略的其他一些页面上显示脚本。 然后写下你的意思:a != b && a != c
相当于!(a == b || a == c)
:“这不是a等于b的情况或 i> c."
好的,我现在明白了。但是如何在 SSI 条件下排除在特定页面上显示脚本?
$DOCUMENT_NAME!=index.html && $DOCUMENT_NAME!=links.html
或 !($DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html)
应该可以解决问题。
谢谢! !($DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html)
这就是我要找的。span>
以上是关于为啥 SSI 条件!= || != 不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在条件格式公式中引用另一个 Google 表格选项卡不起作用?