2016-04-28 5 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

Смежные вопросы