PHP preg_match()或strpos来检查字符串是否以substring开头

时间:2017-11-09 16:46:39

标签: php regex preg-match

我正在根据$_GET['code']更改页面的视图,它可以等同于一系列不同的代码,但它们都以RedTownBearing开头,然后是一系列人物。

例如,以下将全部触发条件

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 ?>

1 个答案:

答案 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确认匹配,否则您正在检查它是否在某处。