为了响应一次通过,您可以使用 preg match all 功能,
也可以使用 preg split 功能。
无论哪种方式都有其缺点,但爆炸和 strrpos 或其他任何方式也是如此。
很多人没有意识到他们可以以更详细的方式使用 preg split
来精确分割字符串。这可以通过详细定义拆分以包括捕获来完成。这种方式有点不同,但如果你学会如何去做,它就会有很大的力量。
正则表达式:
# ([^\s\/]+)(?:\s+|$)|\/+\s*(\d+)[\s\/]*$|\/.*$
# Delim-1
( [^\s\/]+ ) # (1), A group of not whitespace nor forward slash
(?: \s+ | $ ) # folowed by whitespace or EOL
# Delim-2
| \/+ \s* # Forward slashes folowed by whitespaces
( \d+ ) # (2), folowed by a group of digits
[\s\/]* $ # followed by whitespaces or slashes until EOL
# Delim-3
| \/ .* $ # Forward slash folowed by anything until EOL
PHP代码:
<?php
$keywords = preg_split
(
"/([^\s\/]+)(?:\s+|$)|\/+\s*(\d+)[\s\/]*$|\/.*$/",
"classic rock/8",
-1,
PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE
);
print_r($keywords);
?>
Result:
Array
(
[0] => classic
[1] => rock
[2] => 8
)