2016-05-04 2 views
0

Для создания сухарей у меня есть строка, как показано ниже:как удалить определенные символы из строки в PHP

$crumbs = explode("/", $_SERVER["REQUEST_URI"]); 

Это генерирует следующий вывод:

/ sfm?dir=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1/folder2/

Как я могу устранить эти первые символы с выхода:

/ sfm?dir=uploads/sfm/

так, что она начинается с хэш

+0

Будет ли всегда быть первым 2 элемента или он всегда будет '/ SFM реж = загрузки/sfm/'? – AbraCadaver

+0

он всегда будет: '/ sfm? Dir = uploads/sfm /' –

+0

'str_replcace()' before 'explode()' – AbraCadaver

ответ

4

Есть несколько простых способов для решения этой проблемы.

Рассмотрим Замена До взрывающиеся

Первый может быть просто выполнить свой str_replace() вызов до explode() функции:

# Explicitly replace your input 
$input = str_replace($_SERVER["REQUEST_URI"],'/sfm?dir=uploads/sfm/',''); 
# Then explode as expected 
$crumbs = explode("/", $input); 

отрезают Первые два элемента

Другой вариант - просто нарезать исходный массив и удалить первые два элемента от него через array_slice() функции:

# Explode your string into an array 
$crumbs = explode("/", $_SERVER["REQUEST_URI"]); 
# Trim off the first two elements of the array 
$crumbs = array_slice($crumbs,2) 
+0

array_slice() - единственный вариант, если первая часть (в данном случае '/ sfm? Dir = uploads/sfm/') может изменяться с одного запроса на другой. – Webomatik

2

Попробуйте следующее с помощью str_replace():

$input = '/ sfm?dir=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1/folder2 /'; 
$replace = '/ sfm?dir=uploads/sfm /'; 
echo str_replace($replace, '', $input); 

С кодом должна работать:

$crumbs = $_SERVER["REQUEST_URI"]; 
$replace = '/ sfm?dir=uploads/sfm /'; 
$crumbs = str_replace($replace, '', $crumbs); 
$crumbs = explode("/", $crumbs); 

рабочие демо можно найти здесь: https://3v4l.org/QOm4S

1

С взрываются вы создали массив, так что я бы создать строку или другой массив с данными массива, я хочу, чтобы отображаться

$crumbs = explode("/", $_SERVER["REQUEST_URI"]); 

//For string 

$breadcrumbs = $crumbs[2].$crumbs[3].$crumbs[4]; 
1

Там нет необходимости удалять первые символы перед тем, как взорвать строку. Вы можете нарезать массив, чтобы удалить части URL, которые вам не нужны.

Пример кода:

$crumbs = explode('/', '/sfm?dir=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1/folder2/'); 

$result = array_slice($crumbs, 3); 

// Do something with result. 

Ваш код будет работать даже тогда, когда первые части URL начать с чем-то еще.

Надеется, что это помогает

1

Или вы можете исключить эту строку во время взрыва главной строки:

$crumbs = explode("/", $_SERVER["REQUEST_URI"]); 
$new_string = ""; 
for ($i = 0 ; $i < count ($crumbs) ; $i++){ 
    if ($crumbs[$i] != 'sfm?dir=uploads'){ 
     $new_string .= '/' . $crumbs[$i]; 
    } 
} 
return $new_string; //This is your your string 
Смежные вопросы