0

在字符串 XX 中总是会更改,字符串可以更长或更短,并且可以没有搜索到的单词,其中 XX 是一个数字示例:

1 kom. nije naručeno, obično dolazi za 5 dana., slični: sony-6am6ptb1a (0 kom.), sony-s006pb1a (-9 kom.)

因此,我只需要输出:obično dolazi za 5 dana

那么我怎么能在任何情况下只选择 &find 呢?

$find = "obično dolazi za XX dana.";

$string ="1 kom. nije naručeno, obično dolazi za XX dana.";

if (strpos($string,$find) !== false) {
  echo '$string contains $find';
}

我觉得这就是:

$string = "1 kom. nije naručeno, obično dolazi za XX dana.";

for(int intIndex = 1; intIndex <= 31; intIndex++)
{
 $find = "obično dolazi za " . strval(intIndex) . " dana."

 if (strpos($string,$find)) 
 {
 echo '$string contains $find';
 }
}
4

2 回答 2

0

我假设“搜索字符串”有一部分 ( XX) 会发生变化,您不一定知道在给定情况下它会是什么。所以你不能使用strpos因为未知的段。

您必须使用基于搜索字符串左右部分的正则表达式。

有关更多详细信息,请参阅PHP 手册:preg_match

在不知道“XX”代表什么的情况下,我无法提供更多信息。

或者...

如果你想返回XX最左边和最右边的部分是不变的......

// given '1 kom. nije naručeno, obično dolazi za XX dana.'

$string = str_replace("1 kom. nije naručeno, obično dolazi za ", "", str_replace(" dana.", "", $string));
// $string now contains the value of 'XX'

print $string;

输出是XX

或者...

这是否足以满足您的需求..?[这是基于你想出的!:) ]

<?php
    // just throwing '23' in there to demonstrate the awesome power!
    $string = "1 kom. nije naručeno, obično dolazi za 23 dana.";
    for ($intIndex = 1; $intIndex <= 31; $intIndex++) {
        $find = "1 kom. nije naručeno, obično dolazi za " . strval($intIndex) . " dana.";

        // we test that it's not 'false', because it could be '0'
        if (strpos($string, $find) !== false) {
            echo "$string contains $find";
        }
    }
?>
于 2012-12-20T08:25:09.627 回答
0

我想猜测你的输出有问题......及其返回

 $string contains $find

使用"代替'

$find = "obično dolazi za XX dana.";
$string ="1 kom. nije naručeno, obično dolazi za XX dana.";
if (mb_stripos($string,$find) !== false) {
  echo "$string contains $find";
}

输出

 1 kom. nije naruÄeno, obiÄno dolazi za XX dana. contains obiÄno dolazi za XX dana.
于 2012-12-20T08:25:35.607 回答