php模式匹配

时间:2012-05-11 22:10:04

标签: php pattern-matching

我希望在“ - ”,

的最后一次出现之前得到字符串的一部分

例如,

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

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

这样做的简单方法是什么?

谢谢

5 个答案:

答案 0 :(得分:7)

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

strrpos()查找子串的最后一次出现, - 在这种情况下,substr()将原始字符串从第0个字符拆分为strrpos()

定义的第n个字符

答案 1 :(得分:1)

使用strrpos()获取最后一个“ - ”和substr()的位置:

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

作为其他海报的替代方案:

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
)

虽然我更喜欢Jeroens解决方案。

答案 4 :(得分:0)

你可以删除最后一部分:

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