如何删除特殊字符串的结尾?

时间:2016-08-12 05:51:02

标签: php

我有像

这样的字符串
Clothing, Shoes & Accessories:Men's Clothing:T-Shirts

我想删除像T恤一样的字符串结尾。 结果应该是

Clothing, Shoes & Accessories:Men's Clothing

我正在使用

end(explode(':',"Clothing, Shoes & Accessories:Men's Clothing:T-Shirts"));

但我只得到T恤衫

由于

3 个答案:

答案 0 :(得分:2)

从你提到的,看起来像爆炸后,你需要删除最后一个数组元素。这就是array_pop()函数派上用场的地方。

它将删除最后一个元素。然后再尝试一步并破坏你的阵列。

试试这个:

php

答案 1 :(得分:2)

您可以使用简单的正则表达式:

<?php
$string = "Clothing, Shoes & Accessories:Men's Clothing:T-Shirts";
$regex = '~:[^:]*$~';
$string = preg_replace($regex, '', $string);
echo $string;
# Clothing, Shoes & Accessories:Men's Clothing   
?>

答案 2 :(得分:0)

好的,所以你的explode()函数按预期工作,并将字符串拆分成一组较短的字符串并将它们填充到数组中。

end()函数返回数组的最后一个元素,这就是为什么你得到的结果只是看到最后一个文本部分。你真正想要做的是将每个之外的部分放回去,对吗?

你可以通过将数组重新组合成一个字符串来实现这一点,但如果你想继续沿着你似乎所在的路径前进,那么就没有它的最终成员:

// Set the string with initial content
$string = "Clothing, Shoes & Accessories:Men's Clothing:T-Shirts";
// Explode the string into an array with 3 elements
$testArray = explode(':', $string);
// Make a new array from the old one, leaving off the last element
$slicedArray = array_slice($testArray, 0, -1);  
// Implode the array back down to a string
$newString = implode(':', $slicedArray);

搜索分隔符的最后一次出现可能会更容易,并从那里删除字符串中的任何字符,但我不确定这是否适合您的用例。为了完整起见,您可能会这样做:

// Set string with content
$string = "Clothing, Shoes & Accessories:Men's Clothing:T-Shirts";
// Get index of last : character in the string
$lastIndex = strrpos($string, ':');
// Set new string to left portion of original string up til last : char
$newString = substr($string, 0, $lastIndex);