PHP 模式匹配


php pattern matching

我想在最后一次出现"-"之前获取字符串的一部分,

例如

$string1 = 'a-b-c-de-f-gfgh';

我想返回这部分:a-b-c-de-f。当然,我不知道最后一部分的长度。

有什么简单的方法可以做到这一点?

谢谢

echo substr ($string1, 0, strrpos ($string1, '-'));

strrpos() 查找子字符串的最后一个匹配项 - 在本例中,substr() 将原始字符串从第 0 个字符拆分到由 strrpos() 定义的第 n 个字符

使用 strrpos() 获取最后一个 "-" 的位置并 substr() 它:

echo substr($string1, 0, strrpos($string1, "-"));

使用 $x = strrpos($string1,'-'); 获取最后一次出现的- 然后使用 substr() 将从 0 到 $x 的分离字符串返回

 echo substr ($string1, 0, $x);

您可以删除最后一部分:

$string = preg_replace("|-[^-]+$|", "", $string);

作为其他海报的替代品:

preg_match('/(.*)-[^-]+/', 'a-b-c-de-f-gfgh', $result);

结果:

Array
(
    [0] => a-b-c-de-f-gfgh-a
    [1] => a-b-c-de-f-gfgh
)

虽然我更喜欢杰罗恩斯的解决方案。