总是被改变,字符串可以更长或更短,它可以没有搜索字,其中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';
}
}
答案 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.