Php 如何在最后一个破折号后删除字符串

Php 如何在最后一个破折号后删除字符串,php,regex,Php,Regex,我想删除一个已知的字符串(实际上是四个),无论哪一个是打印的,例如一个、两个、三个或四个 或者,删除最后一个斜杠后的字符串也会产生相同的效果 我正在分解url以从中获取字符串,但我只想将字符串保留到最后一个破折号。 url的示例 我想删除实际页面上的 $path = $_SERVER['REQUEST_URI']; $build = strpos($path, 'back')|| strpos($path, 'front'); if ($bui

我想删除一个已知的字符串(实际上是四个),无论哪一个是打印的,例如一个、两个、三个或四个

或者,删除最后一个斜杠后的字符串也会产生相同的效果

我正在分解url以从中获取字符串,但我只想将字符串保留到最后一个破折号。 url的示例 我想删除实际页面上的

    $path = $_SERVER['REQUEST_URI'];
    $build = strpos($path, 'back')||
             strpos($path, 'front');

    if ($build > 0) {

    $array = explode('/',$path);

    $slice = (array_slice($array, 2, 1));  

    foreach($slice as $key => $location);
使用正则表达式:

使用此正则表达式进行搜索:

-[^/-]+(?![^-]*-)
替换为空字符串

代码:

$re = "~-[^/-]+(?![^-]*-)~"; 
$str = "http://www.website.com/page/name-IwantTokeep-RemoveThis/product/"; 

$result = preg_replace($re, "", $str, 1);

我知道你的问题是关于regex的,但我觉得没有必要。 您应该考虑使用StrrPOS来查找字符串中最后一个破折号的索引,并使用所需的子字符串(子字符串)。

$input = "whatever-removethis";
$index = strrpos($input, "-");
if(index === false) //in case no dash was found
{
    $output = $input;
}
else
{
    $output = substr($input, 0, $index);
}


您可以使用以下选项进行匹配:

(-(?!.*-)[^\/]*)
并替换为
(空字符串)