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

86

Как удалить последний символ, только если это точка?

$string = "something here.";
$output = 'something here';
ggggggggg
источник

Ответы:

157
$output = rtrim($string, '.');

(Ссылка: rtrim на PHP.net )

Аликс Аксель
источник
1
@Alix: да забыл о rtrimмногом другом ...!
RageZ
2
Может быть нежелательно удалять ... (elipsis):
mys
2
@OndrejIvanic: У вас есть для этого. Если вы удалите последнюю точку, а оставшаяся точка останется точкой, заголовок вопроса не будет иметь особого смысла, не так ли?
Аликс Аксель,
29

использование rtrim заменяет все "." в конце, а не только последний символ

$string = "something here..";
echo preg_replace("/\.$/","",$string);
призрачная собака74
источник
3
Я предполагаю, что OP хочет удалить все '.' в конце, иначе зачем удалять только одну? ;)
Тор Валамо
2
да, я тоже об этом догадываюсь. просто следите за вопросом как можно ближе.
ghostdog74
2
Это намного лучше, слишком многие люди не понимают, что использование character_maskin в trimосновном удаляет любой экземпляр символа во всей строке
Брок Хенсли,
8

Чтобы удалить последний символ, только если это точка, и не прибегая к этому, preg_replaceмы можем просто рассматривать строку как массив символов и удалить последний символ, если это точка.

if ($str[strlen($str)-1]==='.')
  $str=substr($str, 0, -1);
CO
источник
2
Это правильный ответ, так как другие будут удалять все завершающие символы, а не только последний. Но вы должны использовать ===вместо того, ==чтобы также проверять равенство типов
падаван Тони
3

Я знаю, что вопрос решен. Но, возможно, этот ответ будет кому-то полезен.

rtrim() - Убрать пробелы (или другие символы) с конца строки

ltrim() - Удаление пробелов (или других символов) из начала строки

trim() - Убрать пробелы (или другие символы) из начала и конца строки

Для удаления специальных символов из конца строки или Если строка содержит динамические специальные символы в конце, мы можем сделать это с помощью регулярного выражения.

preg_replace - Выполните поиск по регулярному выражению и замените

$regex = "/\.$/";             //to replace the single dot at the end
$regex = "/\.+$/";            //to replace multiple dots at the end
$regex = "/[.*?!@#$&-_ ]+$/"; //to replace all special characters (.*?!@#$&-_) from the end

$result = preg_replace($regex, "", $string);

Вот несколько примеров, чтобы понять, когда $regex = "/[.*?!@#$&-_ ]+$/";применяется к строке

$string = "Some text........"; // $resul -> "Some text";
$string = "Some text.????";    // $resul -> "Some text";
$string = "Some text!!!";      // $resul -> "Some text";
$string = "Some text..!???";   // $resul -> "Some text";

Надеюсь, это будет вам полезно.

Благодарность :-)

Нишал К.Р.
источник
2

Я знаю, что вопрос в том, какой старый, но, возможно, мой ответ кому-то поможет.

$string = "something here..........";

ltrim удалит ведущие точки. например:-ltrim($string, ".")

rtrim rtrim($string, ".") удалит конечные точки.

trim trim($string, ".") удалит конечные и ведущие точки.

вы также можете сделать это с помощью регулярного выражения

preg_replace would remove можно использовать для удаления точки / точек в конце

$regex = "/\.$/"; //to replace single dot at the end
$regex = "/\.+$/"; //to replace multiple dots at the end
preg_replace($regex, "", $string);

Надеюсь, это будет вам полезно.

Шахбаз
источник
2

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

  • rtrim()
$output = rtrim($string, '.');
  • Regular Expression
preg_replace("/\.$/", "", $string);
  • substr() / mb_substr()
echo mb_substr($string, 0, -1);

echo substr(trim($string), 0, -1);
  • substr() с участием trim()
echo substr(trim($string), 0, -1);
Нишад Ап
источник
0

Используйте комбинацию strrpos и substr, чтобы получить позицию последнего символа точки и удалить его, оставив все остальные символы нетронутыми:

$string = "something here.";

$pos = strrpos($string,'.');
if($pos !== false){
  $output = substr($string,0,$pos);
} else {
  $output = $string;
}

var_dump($output);

// $output = 'something here';
GreensterRox
источник
0

Вы можете использовать функцию rtrim php, которая позволяет обрезать данные, которые существуют в последней позиции.

Например :

$trim_variable= rtrim($any_string, '.');

Самый простой и быстрый способ !!

Моиз Шафкат Хусаин
источник
-1

Пример:

    $columns = array('col1'=> 'value1', 'col2' => '2', 'col3' => '3', 'col4' => 'value4');

    echo "Total no of elements: ".count($columns);
    echo "<br>";
    echo "----------------------------------------------<br />";

    $keys = "";
    $values = "";
    foreach($columns as $x=>$x_value)
    {
      echo "Key=" . $x . ", Value=" . $x_value;
      $keys = $keys."'".$x."',";
      $values = $values."'".$x_value."',";
      echo "<br>";
    }


    echo "----------------------Before------------------------<br />";

    echo $keys;
    echo "<br />";
    echo $values;
    echo "<br />";

    $keys   = rtrim($keys, ",");
    $values = rtrim($values, ",");
    echo "<br />";

    echo "-----------------------After-----------------------<br />";
    echo $keys;
    echo "<br />";
    echo $values;

?>

Выход:

Total no of elements: 4
----------------------------------------------
Key=col1, Value=value1
Key=col2, Value=2
Key=col3, Value=3
Key=col4, Value=value4
----------------------Before------------------------
'col1','col2','col3','col4',
'value1','2','3','value4',

-----------------------After-----------------------
'col1','col2','col3','col4'
'value1','2','3','value4'
Читтаранджан Сетхи
источник
Для этого вы можете просто использовать join (",", $ array)
Nebulosar