2016-04-28 20 views
1

私は、検索文字列の後にいつも私のパスをカットしたい:私は私の道の内側に一度だけの要素を持っている場合特定の文字の後に文字列を切り取るにはどうすればよいですか?

$subject = "katze/123pferd/123hase/tier/affe/berg"; 
$search = "affe"; 

$pos = strpos($subject, $search); 
if ($pos !== false) { 
    $result = substr($subject, 0, strpos($subject, '/', $pos)); 
} 

echo $result; 

これは、正常に動作しています。例えば

場合は、$search = "affe"結果がケースについてkatze/123pferd/123hase/tier/affe

$search = "tier"

ある結果がケースについてkatze/123pferd/123hase/tier

ある$search = "hase"結果はkatze/123pferd/123hase

であるが、私はケース$search = "123"結果を有する場合katze/123pferd/123haseである必要がありますが、katze/123pferdです。

+0

foreachループを使用して行うことができます。 –

+0

あなたの期待する結果は? –

答えて

2

はこれを試してみてください:

は、最悪のケースをチェックするためstrposを使用しています。 123のようになります。

$subject = "katze/123pferd/123hase/tier/affe/berg"; 
$search = "affe"; 

$arr = explode("/", $subject); 
$out = array(); 
foreach($arr as $val){ 
    $out[] = $val; 
    if($val == $search || strpos($val, $search) !== false) 
     break;  
} 
echo implode("/", $out); //katze/123pferd/123hase/tier/affe 

echo '<pre>'; 
print_r($out); 

結果

Array 
(
    [0] => katze 
    [1] => 123pferd 
    [2] => 123hase 
    [3] => tier 
    [4] => affe 
) 
1

文字列の部分文字列が最後に現れる位置を見つけるために、この

<?php 

    $subject = "katze/123pferd/123hase/tier/affe/berg"; 
    $search = "affe"; 
    echo get_string($subject,$search); 

    function get_string($subject,$search){ 
     $arr = (explode("/",$subject)); 
     $key = array_search($search, $arr); 
     $newrr = array_slice($arr,0,$key+1,true); 
     return implode("/",$newrr); 
    } 
1

使用strrposをお試しください:

$subject = "katze/123pferd/123hase/tier/affe/berg"; 
$search = "123"; 

$pos = strrpos($subject, $search); 
if ($pos !== false) { 
    $result = substr($subject, 0, strpos($subject, '/', $pos)); 
} 

print_r($result); // "katze/123pferd/123hase" 

http://php.net/manual/en/function.strrpos.php

関連する問題