2016-04-28 93 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,但它應該是katze/123pferd/123hase

+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

相關問題