2014-01-22 2 views
0

Мне нужно сделать как str_replace(), но с одним символом и должен быть последним символом строки.Как заменить только один символ, а последний из строки

Например, если у меня есть:

$var = "one,two,three,four,finish"; 

мне нужно возвратить:

"one,two,three,fourfinish"; 

Мне нужно заменить последний , строки.

Я знаю, что это может быть легко, но я ничего не нашел в сети!

+1

Вы не заменяете - вы его удаляете. Это то, что вы на самом деле хотите? – h2ooooooo

+0

Я хочу удалить его, я имел в виду замену «,» для «» – ManelPNavarro

+0

Я решил. Спасибо! – ManelPNavarro

ответ

3

Вы можете использовать strrpos найти последнее вхождение строки в строку, а затем использовать substr:

<?php 
    $var = "one,two,three,four,finish"; 

    if ($lastPosition = strrpos($var, ',')) { 
     $var = substr($var, 0, $lastPosition) . substr($var, $lastPosition + 1); 
    } 

    var_dump($var); //string(24) "one,two,three,fourfinish" 
?> 

DEMO


Если вы хотите заменить вам просто нужно выполнить замену строки в вашем состоянии:

<?php 
    $var = "one,two,three,four,finish"; 
    $replace = "-"; 

    if ($lastPosition = strrpos($var, ',')) { 
     $var = substr($var, 0, $lastPosition) . $replace . substr($var, $lastPosition + 1); 
    } 

    var_dump($var); //string(24) "one,two,three,four-finish" 
?> 
+0

Это сработало. Большое спасибо! – ManelPNavarro

0

Если последнее слово $ вар всегда «конец», вы могли бы использовать это:

$var = "one,two,three,four,finish"; 
$goodVar = str_replace(',finish', 'finish', $var); 
print $goodVar; 
+0

Проблема в том, что я хочу удалить «,», я не могу заменить его никаким словом. – ManelPNavarro

0

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

$string = 'one,two,three,four,finish'; 
$find = ','; 
$replace = ''; 
$result = preg_replace(strrev("/$find/"),strrev($replace),strrev($string),1); 
echo strrev($result); 
0
$var = "one,two,three,four,finish"; 

$var = preg_replace("/,([^,]*)$/", "\\1", $var); 

// $var: "one,two,three,fourfinish" 
3

Найти местоположение последней запятой в строке с помощью strrpos() и удалить его с помощью substr_replace():

echo substr_replace($var, '', strrpos($var, ','), 1); 

Demo

+0

Символ * must * существует, хотя он удаляет первый символ: https://eval.in/93414 – h2ooooooo

+0

@ h2ooooooo: Правильно. Это хорошая идея, чтобы убедиться, что персонаж действительно тот, который вы хотите удалить (как вы это делали в своем ответе) :) –

0

Вы можете использовать strchr, чтобы найти последнее совпадение символ в заданной строке

Попробуйте

$var = "one,two,three,four,finish"; 
$len = strlen($var)-strlen(substr(strrchr($var,","),1)); 
echo substr($var,0,$len-1).substr(strrchr($var,","),1); 

Demo here

0

Вы можете найти последнее смещение углы "" с strrpos. Затем разрежьте и слейте.

Смежные вопросы