Torez
Torez

Reputation: 1912

Regex - Trim character at the end of a string

I am trying to remove a trailing - (dash) at the end of the string. Here is my code:

<?php

$str = 'SAVE $45! - Wed. Beach Co-ed 6s (Jul-Aug)';

echo ereg_replace('([^a-z0-9]+)','-',strtolower($str));

?>

produces this:

save-45-wed-beach-co-ed-6s-jul-aug-

How can I remove a specific trailing character only if its there, in this case the dash?

Thanks in advance.

Upvotes: 3

Views: 12164

Answers (3)

Ramesh Tabarna
Ramesh Tabarna

Reputation: 539

Another solution.

<?php

$string = 'SAVE $45! - Wed. Beach Co-ed 6s (Jul-Aug)';
$search = array('/[^a-z0-9]+/', '/[^a-z0-9]$/');
$replace = array('-', '');
echo preg_replace($search, $replace, strtolower($string));

?>

Output.

save-45-wed-beach-co-ed-6s-jul-aug

Upvotes: 1

J&#252;rgen Steinblock
J&#252;rgen Steinblock

Reputation: 31723

Your regex is false because it removes every non-alphanumeric characters with a dash.

That should be

echo ereg_replace('-$','',strtolower($str));

$ means "end of string" and the second parameter is the replacement. (At least I think so, I don't know the php ereg_replace function)

Upvotes: 0

Artefacto
Artefacto

Reputation: 97805

Use rtrim:

rtrim($str, "-")

If you insist on using regex, you can do

preg_replace('/-$/', '', $str)

The $ character matches the end of the subject.

Upvotes: 11

Related Questions