-1

私が抱えている問題は、スペースを削除することです。私はいくつかの異なる方法を試しましたが、どれもそれらを削除していません。お客さまにわかりやすいように、いつでも並んでいるスペースのあるドロップダウンメニューを用意しています。以下の$strのようになります。主な問題は、mysqlデータベースに送信されると、余分なスペースがアクセント記号付きのAに置き換えられることです。もう1つの問題は、顧客が送信する前に確認するための余分なスペースがあるため、最終的に正しく表示されないことです。mysql_prepの機能についてはよくわかりませんが、データベースでクエリを実行する前に、trimを使用することもできます。

私は試した:

$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

4

3 に答える 3

3

ノーブレークスペースは通常のスペースではありません。

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

または、他のすべての空白をそこに入れるには:

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

また、文字エンコードに注意してください。これにはいくつかの問題があるようです。

于 2011-08-03T22:02:55.773 に答える
0

これを使って :

$string = preg_replace('/\s+/', '', $string);
于 2011-08-03T21:32:32.587 に答える
0

もう少しコードは大丈夫ですが動作します

$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);
于 2011-08-03T21:53:55.177 に答える