2012-12-20 50 views
0

选词XX总是改变和字符串可长可短,甚至可以不搜索词,其中XX是一个数字 例如:PHP从字符串中的字符串

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

所以我需要输出:običnodolazi za 5 dana

那么我怎么才能在任何情况下选择&?

$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

对不起,我不知道你在问什么,请重新陈述你的问题。 –

+3

你为什么问?你的代码会工作......或者我误解了这个问题 – Nemoden

+2

['mb_stripos()'](http://php.net/manual/en/function.mb-stripos.php) – DaveRandom

回答

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"; 
     } 
    } 
?> 
+0

XX是天数,我不知道会是什么 – mehnihma

+0

你是否想要返回天数? –

+0

我认为这是它 $ string =“1 kom。nijenaručeno,običnodolazi za XX dana。”; (int intIndex = 1; intIndex <= 31; intIndex ++) { $ find =“običnodolazi za”。 strval(intIndex)。 “达娜。“ 如果(strpos($字符串,$ FIND)){ 回声 '$字符串包含$找到';} ? } – mehnihma

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. 
+0

是类似的东西,XX在这种情况下 只是一个数字,数天我只需要选择字符串 – mehnihma

+0

的特定部分我已经编辑了问题 – mehnihma

+0

我真的不明白你真的很想实现 – Baba