我知道在php中使用explode()函数很容易在两个斜杠之间提取字符串,如果字符串就像
本地主机/ used_cars /搜索/ mk_honda / md_city / mk_toyota
我想在mk_之后提取字符串,直到斜杠如:** honda,toyota **
任何帮助都将受到高度赞赏。
我这样做
echo strpos(uri_string(),'mk') !== false ? $arr = explode("/", $string, 2);$first = $arr[0]; : '';
但没有工作,因为如果用户在任何位置输入mk_honda,那么explode()无法处理。
答案 0 :(得分:2)
使用正则表达式:
<?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
)
答案 1 :(得分:0)
试试这个
const
输出为
汽车,本田,城市,丰田
答案 2 :(得分: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>';