如何在PHP中修剪右边的字符串?

时间:2017-12-07 07:15:05

标签: php string trim

我有一个字符串示例

this-is-the-example/exa

我想从上面的行

修剪/ exa
$string1 = "this-is-the-example/exa";
$string2 = "/exa";

我正在使用rtrim($string1, $sting2)

但输出为this-is-the-exampl

我希望this-is-the-example作为输出。

两个字符串都是动态的,并且可能在字符串中出现多次。但我只想删除最后一部分。此外,string2中还没有强制要求/。这也许是正常的字符串。例如aabc ..

7 个答案:

答案 0 :(得分:4)

您可以使用各种方法:

使用substrDEMO):

function removeFromEnd($haystack, $needle)
{
    $length = strlen($needle);

    if(substr($haystack, -$length) === $needle)
    {
        $haystack = substr($haystack, 0, -$length);
    }
    return $haystack;
}


$trim = '/exa';
$str = 'this-is-the-example/exa';


var_dump(removeFromEnd($str, $trim));

使用正则表达式(DEMO):

$trim = '/exa';
$str = 'this-is-the-example/exa';

function removeFromEnd($haystack, $needle)
{
    $needle = preg_quote($needle, '/');
    $haystack = preg_replace("/$needle$/", '', $haystack);
    return $haystack;
}
var_dump(removeFromEnd($str, $trim));

答案 1 :(得分:2)

首先explode字符串,使用array_pop从爆炸数组中删除最后一个元素,然后使用implode再次/

$str = "this-is-the-example/exa";
if(strpos($str, '/') !== false)
{
    $arr = explode('/', $str);
    array_pop($arr);
    $str = implode('/', $arr);
    // output this-is-the-example
}

如果您在网址中有多个/并且仅删除最后一个元素,那么这将有效。

$str = "this-is-the-example/somevalue/exa";

if(strpos($str, '/') !== false)
{
    $arr = explode('/', $str);
    array_pop($arr);
    $str = implode('/', $arr);
    // output this-is-the-example
}

答案 2 :(得分:0)

你可以使用explode

<?php

$x = "this-is-the-example/exa";

$y = explode('/', $x);

echo $y[0];

答案 3 :(得分:0)

rtrim的第二个参数是一个字符掩码,而不是一个字符串,你的最后一个“e”被激活,这是正常的。

使用其他内容,例如regexp(preg_replace)以满足您的需求

这会将所有内容保留在“/”char:

之前
$str = preg_replace('/^([^\/]*).*/','$1', 'this-is-the-example/exa');

删除最后一部分。

$str = preg_replace('/^(.*)\/.*$/','$1', 'this-is-the-example/exa/mple');

答案 4 :(得分:0)

如果在搜索字符串中找不到子字符串,则允许错误处理...

<?php

$myString = 'this-is-the-example/exa';

//[Edit: see comment below] use strrpos, not strpos, to find the LAST occurrence 
$endPosition = strrpos($myString, '/exa');

// TodO; if endPosition === False then handle error, substring not found 

$leftPart = substr($myString, 0, $endPosition);

echo($leftPart);

?>

输出

  

此-是最示例

答案 5 :(得分:0)

打个招呼strstr()

$str = 'this-is-the-example/exa';
$trim = '/exa';
$result = strstr($str, $trim, true);
echo $result;

答案 6 :(得分:0)

希望这会有所帮助。 :)

只需尝试以下代码:

<?php
$this_example = substr("this-is-the-example/exa", 0, -4);  
echo "<br/>".$this_example; // returns "this-is-the-example"
?>