0

有没有办法结合

 if ((strpos($str,"abc") !== false) and (strpos($str,"abc") < 1000))

或者我需要两个ifs吗?因为如果 abc 不在字符串中,则位置为 -1,因此小于 1000。

我只对 php 对这个问题有什么特别感兴趣;)

这是:

if (strpos(substr($str,0,1000),"abc") !== false) 

一个好方法吗?

4

3 回答 3

2
$pos_abc = strpos($str, 'abc');
if ($pos_abc !== false && $pos_abc < 1000)

你想测试两个不同的东西: 1-abc在字符串中?并且 2-abc在该字符串的前一千个字符中。虽然可以在单个测试中重写它,但它没有任何好处,而且实际上会花费很多代码的清晰度。

于 2013-10-02T09:00:12.767 回答
0

如果你愿意,你可以试试这个:

if( in_array(strpos($str,"abc"),range(0,1000),true))

然而,它看起来并不简单,而且它的性能成本相当高。

也许最好的方法是使用变量:

$pos = strpos($str,"abc");
if( $pos !== false && $pos < 1000) ...
于 2013-10-02T09:00:42.163 回答
0

两个问题:

  • 你的双strpos
  • 比较(2. 和运算符)取决于第一个,这可能会导致问题(例如,在以后的 php 版本中)

更新:

好又快的解决方案模式:

if(($pos = strpos($str,"abc") !== false)?($pos < 1000):false)

漂亮干净的解决方案模式:

$pos = strpos($str,"abc");
if(($pos !== false)?($pos < 1000):false)
于 2013-10-02T09:08:12.103 回答