我有像
这样的字符串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恤衫
由于
答案 0 :(得分:2)
答案 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);