我正在根据$_GET['code']
更改页面的视图,它可以等同于一系列不同的代码,但它们都以Red
,Town
或Bearing
开头,然后是一系列人物。
例如,以下将全部触发条件
RedWings-223123-NY
Townmansion-2341322-KY
BearingWays-23422-DC
我试过了
<?php if(preg_match("%(?=.*Bear)(?=.*Red)(?=.*Town)%", $_GET['code'])): ?>
<span> new view </span>
<?php endif ?>
和
<?php if( strpos($_GET['code']), "Red" ) !== false) || strpos($_GET['code']), "Bear" ) !== false || strpos($_GET['code']), "Town" ) !== false)): ?>
<span>new view</span>
<?php endif ?>
答案 0 :(得分:1)
您的strpos
在语法上不正确,您在传递要搜索的字词之前关闭了这些功能。
您的正则表达式要求所有条款都存在,并且不检查字符串的开头。您需要使用or
和主要锚点。这样:
^(?:Bear|Town|Red)
应该这样做。
正则表达式演示:https://regex101.com/r/civdig/3/
更正strpos
用法:
<?php if( strpos($_GET['code'], "Red" ) === 0 || strpos($_GET['code'], "Bear" ) === 0 || strpos($_GET['code'], "Town" === 0)): ?>
<span>new view</span>
<?php endif ?>
您需要0
确认匹配,否则您正在检查它是否在某处。