Як видалити всі конкретні символи в кінці рядка в PHP?


86

Як видалити останній символ, лише якщо це крапка?

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

Відповіді:


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

(Довідка: rtrim на PHP.net )


1
@Alix: так, забув про rtrimнабагато простіше ...!
RageZ

2
Це може бути небажаним , щоб видалити ... (elipsis):
мис

2
@OndrejIvanic: У вас є для цього. Якщо ви видалите останню крапку, а решта все ще є крапкою, заголовок питання не матиме особливого сенсу, чи не так?
Алікс Аксель

29

використання rtrim замінює всі "." наприкінці, не лише останнього персонажа

$string = "something here..";
echo preg_replace("/\.$/","",$string);

3
Я здогадуюсь, що OP хоче видалити всі '.' наприкінці, інакше навіщо видаляти лише одну? ;)
Тор Валамо

2
так, я теж це здогадуюсь. просто слідкуючи за питанням якомога ближче.
ghostdog74

2
Це набагато краще, занадто багато людей не усвідомлюють, що використання character_maskв trimосновному видаляє будь-який екземпляр символу з цілого рядка
Брок Хенслі

8

Щоб видалити останній символ, лише якщо це крапка, і не вдаючись до цього, preg_replaceми можемо просто розглядати рядок як масив символів і видаляти кінцевий символ, якщо це крапка.

if ($str[strlen($str)-1]==='.')
  $str=substr($str, 0, -1);

2
Це правильна відповідь, оскільки інші видалять усі кінцеві символи, а не лише останній. Але вам слід використовувати ===замість того, ==щоб також перевіряти рівність типу
padawanTony

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($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';

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)
Небулосар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.