Удаление сгенерированных пробелов в php - PullRequest
0 голосов
/ 04 августа 2011

У меня проблема с удалением пробелов. Я пробовал несколько разных способов, и ни один из них не удалил их. У меня есть выпадающее меню, в котором есть пробелы, так что все время выстраиваются в очередь, чтобы клиент мог их легко понять. Это проходит как $ str ниже. Основная проблема заключается в том, что после отправки в базу данных mysql лишние пробелы заменяются буквой A с ударением. Другая проблема заключается в том, что в итоге он выглядит не совсем корректно с дополнительными пробелами, которые клиент должен просмотреть перед отправкой. Я не совсем понимаю, что такое функция mysql_prep, но там также есть триммер до запуска запроса в базе данных.

Я пытался:

$str = "  9:00 AM  to  11:00 AM"
$time = str_replace(' ', '', $str);
echo $time; // OUTPUTS "  9:00AM  to  11:00AM" // THOSE SPACES DONT NEED TO BE REMOVED


$str = "  9:00 AM  to  11:00 AM"
$time = str_replace('  ', '', $str); //NOTE THE EXTRA SPACE
echo $time; // OUTPUTS "  9:00 AM  to  11:00 AM"    


$str = "  9:00 AM  to  11:00 AM"
$time = str_replace(' ', '', $str); //EVEN TRIED THIS EVEN THOUGH THERES NO WAY
echo $time; // OUTPUTS "  9:00 AM  to  11:00 AM"

И

$str = "  9:00 AM  to  11:00 AM"
$time = preg_replace('/\s+/', '', $str);
echo $time; // OUTPUTS "???9:00 AM??to??11:00 AM"//SEEMS CLOSEST BUT THE TRIANGLE QUESTION MARKS REPLACE THE SPACES


$str = "  9:00 AM  to  11:00 AM"
$time = preg_replace('/\s\s+/', ' ', $str);
echo $time; // OUTPUTS "  9:00 AM  to  11:00 AM"

Я даже пытался использовать разнесение и обрезку, чтобы сделать это по кругу, и даже обрезка не удалила пробелы. Версии, которые я использую; PHP: 5.3.4, MySQL: 5.1.53 и Firefox: 5.0.1

Ответы [ 3 ]

2 голосов
/ 04 августа 2011

Неразрывный пробел не является нормальным пробелом.

str_replace("\xa0",'',$string);

Или получить все остальные пробелы там:

preg_replace("/[\xa0\s]{2,}/",'',$string);

И помните о кодировке символов, у вас, похоже, есть некоторые проблемы с этим.

0 голосов
/ 04 августа 2011

хорошо, немного больше кода, но работает

$str = "  9:00 AM  to  11:00 AM";  

$find_cln = array (' ','to','AM','PM'); // find
$rep_cln = array ('',' to ',' AM',' PM'); // replace

$str = str_replace($find_cln, $rep_cln, $str);
0 голосов
/ 04 августа 2011

Используйте это:

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