我想总是在搜索的字符串之后剪切我的路径:
$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
.
试试这个:
使用
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
)
试试这个
<?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);
}
使用 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