如何使用 preg_match_all() 匹配两个已知点之间的子串?

How to match substrings between two known points using preg_match_all()?

我知道使用 PHP 中的 explode() 函数很容易提取两个斜线之间的字符串。如果字符串是这样的怎么办:

localhost/used_cars/search/mk_honda/md_city/mk_toyota

我想在 mk_ 之后提取字符串,直到斜线如:hondatoyota.

这是我的代码:

$input = 'localhost/used_cars/search/mk_honda/md_city/mk_toyota';
preg_match('#/mk_([^/]*)/#', $input, $matches);
echo $matches[1];

该代码仅从 mk_honda 中提取 honda,但为什么它没有从 mk_toyota 中提取 toyota

首先,您没有使用 preg_match_all,其次,第二件事 toyota 末尾没有 /,因此它不匹配,请将其删除:

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