PHP从字符串中选择一个单词

时间:2012-12-20 08:16:32

标签: php string strpos

字符串XX中的

总是被改变,字符串可以更长或更短,它可以没有搜索字,其中XX是数字 例如:

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

因此,我需要输出:običnodolaziza 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';
 }
}

2 个答案:

答案 0 :(得分:0)

我假设'搜索字符串'的部分(XX)发生了变化,并且您不一定知道在给定情况下它会是什么。因此,由于未知段,您无法使用strpos

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

有关详细信息,请参阅PHP Manual: 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";
        }
    }
?>

答案 1 :(得分: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.