2013-07-30 3 views
1

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

Текст может выглядеть так и иметь пробелы на всем протяжении. Бла-бла-бла ...

Вот мой код, хотя он успешно удаляет любые() и заменяет его «ничего»:

$strip_metar = array('()' => '', ' . ' => '. ', ' , ' => ', '); 
$output_this = $text->print_pretty(); 
$output_this = str_replace(array_keys($strip_metar), 
          array_values($strip_metar), 
          $output_this); 

Любые идеи?

+2

Можете ли вы предоставить образец строки и ожидаемый результат? – user20232359723568423357842364

+0

Возможный дубликат http://stackoverflow.com/questions/2326125/remove-multiple-whitespaces-in-php – hdvianna

ответ

2

Чтобы удалить все пробелы до периода . и запятой , вы можете передавать массивы в str_replace функции:

$output_this = str_replace(array(' .',' ,'),array('.',','),$string);

В примере вы предоставили, вы не отогнать пробелы до периода, если период не следует пробел ' . '

+0

Разве это не то, что делается сейчас? –

0
$content = "This is , some string ."; 
$content = str_replace(' .', '.',$content); 
$content = str_replace(' ,', ',',$content); 
echo $content; 
+0

Это будет выводить «Это строка». – mdurchholz

1
$output_this = preg_replace('/\s+\./', '.', $output_this); 
$output_this = preg_replace('/\s+,/', ',', $output_this); 

Это должно быть точным.

Извините, я не лучше оптимизировать это в одном запросе для вас. edit: удалено $ для конца строки, не уверен, что вы захотите этого.

5

У меня нет 50 респ поэтому я не могу комментировать, но это просто расширить ответ Moylin в:

Чтобы сделать это в 1 запрос просто сделать, как, например:

$output_this = preg_replace('/\s+(?=[\.,])/', '', $output_this); 

Объяснение регулярное выражение:

\ х соответствует пробелу

+ матчи между 1 и бесконечность времени.

(? =) Является положительным взглядом. Это означает: «Вы должны найти это ПОСЛЕ основной группы, но не включайте его».

[] - это набор символов для соответствия.

\. это период сбегания (потому что соответствует любому в регулярном выражении)

и, является запятой!

+1

Определенное улучшение, пришло время перечитать регулярное выражение. – Moylin

+0

Уо, у меня 50 репутации: D спасибо за голосование. – JDiPierro

Смежные вопросы