繁体   English   中英

如何在两个斜杠之间提取字符串php

[英]How to extract string between two slashes php

我知道使用php中的explode()函数很容易提取两个斜线之间的字符串,如果字符串像

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

我想在mk_之后提取字符串,直到像这样的斜线:**本田,丰田**

任何帮助将不胜感激。

我就是这样

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

但无法正常工作,因为如果用户在任何位置输入mk_honda,则explode()均无法处理该问题。

使用正则表达式:

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
)

试试这个

$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;

它给出输出为

汽车,本田,市,丰田

/分解字符串,然后使用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>';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM