Jak usunąć wszystkie określone znaki na końcu ciągu w PHP?

86

Jak usunąć ostatni znak tylko wtedy, gdy jest to kropka?

$string = "something here.";
$output = 'something here';
ggggggggg
źródło

Odpowiedzi:

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

(Odniesienie: rtrim na PHP.net )

Alix Axel
źródło
1
@Alix: tak zapomniałem o rtrimdużo łatwiejszym…!
RageZ
2
Może być niepożądane, aby usunąć ... (elipsis):
mys
2
@OndrejIvanic: Masz za to. Jeśli usuniesz ostatnią kropkę, a pozostała nadal będzie kropką, tytuł pytania nie miałby większego sensu, prawda?
Alix Axel
29

użycie rtrim zastępuje wszystkie „.” na końcu, a nie tylko ostatnia postać

$string = "something here..";
echo preg_replace("/\.$/","",$string);
ghostdog74
źródło
3
Domyślam się, że OP chce usunąć wszystkie „.” na końcu, inaczej po co usuwać tylko jedną? ;)
Tor Valamo
2
tak, ja też to zgaduję. po prostu podążając za pytaniem tak dokładnie, jak to możliwe.
ghostdog74
2
To jest o wiele lepsze, zbyt wiele osób nie zdaje sobie sprawy, że użycie character_maskw trimzasadzie usuwa jakiekolwiek wystąpienie znaku z całego ciągu
Brock Hensley
8

Aby usunąć ostatni znak tylko wtedy, gdy jest to kropka i nie uciekając się do preg_replacetego, możemy po prostu potraktować ciąg jako tablicę znaków i usunąć ostatni znak, jeśli jest to kropka.

if ($str[strlen($str)-1]==='.')
  $str=substr($str, 0, -1);
WSPÓŁ
źródło
2
To jest poprawna odpowiedź, ponieważ pozostałe usuwałyby wszystkie znaki końcowe, a nie tylko ostatni. Ale powinieneś użyć ===zamiast, ==aby również sprawdzić równość typów
padawanTony
3

Wiem, że pytanie zostało rozwiązane. Ale może ta odpowiedź będzie dla kogoś pomocna.

rtrim() - Usuń białe znaki (lub inne znaki) z końca łańcucha

ltrim() - Usuń białe znaki (lub inne znaki) z początku ciągu

trim() - Usuń białe znaki (lub inne znaki) z początku i końca ciągu

Aby usunąć znaki specjalne z końca ciągu lub Czy ciąg zawiera dynamiczne znaki specjalne na końcu, możemy to zrobić za pomocą wyrażenia regularnego.

preg_replace - Wykonaj wyszukiwanie i zamień według wyrażeń regularnych

$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);

Oto przykład, aby zrozumieć, kiedy $regex = "/[.*?!@#$&-_ ]+$/";jest stosowany do ciągu

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

Mam nadzieję, że jest to pomocne dla Ciebie.

Dzięki :-)

Nishal KR
źródło
2

Wiem, że pytanie jest co stare, ale może moja odpowiedź jest dla kogoś pomocna.

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

ltrim usunie wiodące kropki. na przykład:-ltrim($string, ".")

rtrim rtrim($string, ".") usunie końcowe kropki.

przycinanie trim($string, ".") usuwałoby końcowe i początkowe kropki.

możesz to również zrobić za pomocą wyrażenia regularnego

preg_replace by remove może być użyty do usunięcia kropki / kropek na końcu

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

Mam nadzieję, że jest to pomocne dla Ciebie.

Shahbaz
źródło
2

Ostatni znak można usunąć na różne sposoby, oto kilka

  • 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() z trim()
echo substr(trim($string), 0, -1);
Nishad Up
źródło
0

Użyj kombinacji strrpos i substr, aby uzyskać pozycję ostatniego znaku kropki i usunąć go, pozostawiając wszystkie inne znaki nienaruszone:

$string = "something here.";

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

var_dump($output);

// $output = 'something here';
GreensterRox
źródło
0

Możesz użyć funkcji rtrim w php, która pozwala przyciąć dane, które istnieją na ostatniej pozycji.

Na przykład :

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

Najprostszy i najszybszy sposób !!

Moiz Shafqat Husain
źródło
-1

Przykład:

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

?>

Wynik:

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'
Chittaranjan Sethi
źródło
W tym celu możesz po prostu użyć join (",", $ array)
Nebulosar,