Как вы удаляете числа из строки в PHP? - PullRequest
1 голос
/ 26 апреля 2011
$text = preg_replace('/[^\\/-a-z\s]/i', '', $text);

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

$ text = "FLAMBOYANT # _45 / ADJ" = результат = FLAMBOYANT45 / ADJ

Ответы [ 4 ]

3 голосов
/ 26 апреля 2011

Избегайте -, которому вы хотите соответствовать в своем регулярном выражении. Первый дефис - в части класса символов вашего регулярного выражения имеет особое значение. Он будет генерировать диапазон от / до a (я думаю). Чтобы изменить, попробуйте:

$text = preg_replace('/[^\\/\-a-z\s]/i', '', $text);
1 голос
/ 26 апреля 2011

Мой PHP-Fu не так силен, но я подозреваю, что /-a-z интерпретируется как диапазон символов от / до z (и обратите внимание, что числа сразу следуют за косой чертой в ASCII), так что, возможно, выхочу это:

$text = preg_replace('/[^\\/\-a-z\s]/i', '', $text);

Я просто добавил обратную косую черту, чтобы избежать (иногда) особого значения "-" в классе символов регулярного выражения.

1 голос
/ 26 апреля 2011

Это работает

$text = preg_replace('#[^\\/\-a-z\s]#i', '', $text);
0 голосов
/ 26 апреля 2011

<?php
  $text = "FLAM-BOYANT#_45/ADJ";
  $allowed = "/[^a-z\\040\\.\\-\/]/i";
  $text=  preg_replace($allowed,"",$text);
  echo $text; //FLAM-BOYANT/ADJ
?>
...