0

から文字列を検索したい

$str = "Hello this is dummy.test. in this string  
any character, any special character can appear. it is not a fixed type 
text and predefined. this string will not read manually check by the 
Programmer.Sorry for the bad English.";

ある種の問題のため、私のアルゴは修正されました。最初にtestキーワードの位置を見つけてから、 testからダミーキーワードに戻り、ダミーキーワードの位置を見つけたいと考えています。

私もインターネットを検索して使用しましたが、この方法でトラバースできるPHPの関数は見つかりませんでした。

私もテストしますstrrpos()が、関連性がなく必要な結果ではありません。解決策をお願いします。

必要な出力dummy.test

Algo :最初に右 (テスト) を検索し、次に右から左 (ダミー) のみを検索します。最初は右 (テスト) ではなく、最初から左 (ダミー) です。

4

2 に答える 2

1

最初にtestusingの位置を見つけ、文字列をwithstrpos()まで切り取り、再度 を使用して部分文字列内の位置を見つけます。testsubstr()strpos()dummy

$substring = substr($str, 0, strpos($str, 'test'));
$dummy = strpos($substring, 'dummy');
echo $dummy;

出力:

14

デモ!


アップデート

質問の編集に従って、次の関数はあなたが望むことをするはずです。それはおそらく最善の解決策ではなく、少し醜いですが、それで始められるはずです:

function searchstr($str) 
{
    $pos = strpos($str, 'test') + strlen($str);
    $substring = substr($str, 0, $pos);
    $dummypos = strpos($substring, 'dummy', TRUE);

    $words = explode(' ', $str);
    $chars = -1; 
    foreach($words as $word)
    {
      $chars += strlen($word);
      if($chars >= $dummypos)
      {
         return $word;
      }   
    }   
    return ''; 
}   

echo searchStr($str);

出力:

dummy.test.

デモ!

于 2013-09-19T16:40:00.213 に答える
0

strrpos正しい方法でしょう。私があなたを正しく理解していれば、オフセットパラメータを使用してこれが機能するはずです:

$test = strrpos($str, 'test');
$dummy = strrpos($str, 'dummy', $test);

これにより、最後の「テスト」の前に発生する最後の「ダミー」が見つかります。

于 2013-09-19T16:35:17.343 に答える