Regex - Обрезать символ в конце строки - PullRequest
3 голосов
/ 29 мая 2010

Я пытаюсь удалить конечный - (тире) в конце строки. Вот мой код:

<?php

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

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

?>

производит это:

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

Как я могу удалить определенный завершающий символ, только если он есть, в данном случае тире?

Заранее спасибо.

Ответы [ 3 ]

11 голосов
/ 29 мая 2010

Использование rtrim :

rtrim($str, "-")

Если вы настаиваете на использовании регулярных выражений, вы можете сделать

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

Символ $ соответствует концу темы.

1 голос
/ 29 мая 2010

Другое решение.

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

?>

Вывод.

save-45-wed-beach-co-ed-6s-jul-aug
0 голосов
/ 29 мая 2010

Ваше регулярное выражение ложно, потому что оно удаляет все не алфавитно-цифровые символы с тире.

Это должно быть

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

$ означает «конец строки», а вторым параметром является замена. (По крайней мере, я так думаю, я не знаю функцию php ereg_replace)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...