2016-08-12 4 views
1

У меня есть строка, какКак удалить конец строки со специальными символами?

Clothing, Shoes & Accessories:Men's Clothing:T-Shirts 

Я хочу, чтобы удалить конец строки, как футболки. И результат должен быть

Clothing, Shoes & Accessories:Men's Clothing 

Я использую

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

Но я получаю только футболки

Благодарность

+0

Что именно вы хотите сохранить? Одежда или футболка? – Jan

ответ

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

Из того, что вы уже упоминали, выглядит как после взрыва , вам нужно удалить последний элемент массива. Здесь array_pop() функция пригодится.

Он удалит последний элемент. И затем попробуйте еще один шаг и взорвите ваш массив.

Попробуйте это:

$arr = explode(':', $string); 
array_pop($arr); 
echo implode(':', $arr); // Clothing, Shoes & Accessories:Men's Clothing 
0

ОК, так что ваши взрываются() функция работает так, как ожидалось, и расщепление строки в набор короче строк и набивая их в массив.

Функция 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); 
Смежные вопросы