2017-07-14 47 views
1

我知道这两条斜线之间的容易提取字符串中使用爆炸()在PHP函数,如果该字符串是像如何提取两条斜线PHP之间串

本地主机/ used_cars /搜索/ mk_honda/md_city/mk_toyota

我想mk_后直到斜线状提取字符串:**本田,丰田**

任何帮助,将不胜感激。

我做这样的

echo strpos(uri_string(),'mk') !== false ? $arr = explode("/", $string, 2);$first = $arr[0]; : ''; 

,但没有工作,因为如果用户在任何位置进入mk_honda然后爆炸()失败来处理。

+0

爆炸并做爆炸物品一个foreach。 –

回答

2

使用正则表达式:

http://ideone.com/DNHXsf

<?php 

$input = 'localhost/used_cars/search/mk_honda/md_city/mk_toyota'; 

preg_match_all('#/mk_([^/]*)#', $input, $matches); 

print_r($matches[1]); 

?> 

输出:

Array 
(
    [0] => honda 
    [1] => toyota 
) 
+0

丹尼尔!为什么它没有得到** toyota **作为mk_? –

+0

@VehicleCorner因为我不得不跳上班。但我很接近。下一次,考虑接受最简单的解决方案;-) –

+1

谢谢@Daniel Alder!你的解决方案是高效和直接的...因为它导致了解决方案。我已经结束了这个'preg_match_all('#mk _([^ /] *)#')' –

0

刚刚尝试这一点

$str='localhost/used_cars/search/mk_honda/md_city/mk_toyota'; 
$str=explode('/',$str); 
$final=[]; 
foreach ($str as $words){ 
(!empty(explode('_',$words)))?(isset(explode('_',$words)[1]))?$final[]=explode('_',$words)[1]:false:false; 
} 
$final=implode(',',$final); 
echo $final; 

它给输出

汽车,本田汽车,城市,丰田

0

通过/爆炸你的字符串,然后检查数组的每一个元素strpos

$string = 'localhost/used_cars/search/mk_honda/md_city/mk_toyota'; 
$parts = explode('/', $string); 
$r = []; 
foreach ($parts as $p) { 
    // use `===` as you need `mk_` in position 0 
    if (strpos($p, 'mk_') === 0) { 
     // 3 is a length of `mk_` 
     $r[] = substr($p, 3);  
    } 
} 
echo'<pre>',print_r($r),'</pre>'; 
+0

非常感谢你** U_mulder ** –