【问题标题】:Removing   generated spaces in php删除 php 中生成的空格
【发布时间】:2011-08-04 08:23:01
【问题描述】:

我遇到的问题是删除空格。 我尝试了几种不同的方法,但都没有删除它们。 我有一个下拉菜单,其中包含空格,以便客户可以轻松理解所有时间。它就像下面的 $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"

我什至尝试使用explode 和trim 以一种圆形的方式进行操作,甚至trim 也没有删除空格。我正在使用的版本; PHP:5.3.4, MySQL:5.1.53 & Firefox:5.0.1

【问题讨论】:

  • 您的第一个 preg_replace 示例适用于我:codepad.org/tOfpVswD
  • trim() 或其兄弟rtrim() 或其姐妹ltrim() 又出了什么问题?
  • 得到一个 Â在您的文本中表示您的字符集不匹配。一个地方可能是 UTF-8,另一个地方是 ISO-8859。
  • @Shi:OP 也希望删除内部空间。
  • 为什么你的问题的标题是Removing  ,但你的例子都没有对包含 的字符串进行操作?

标签: php mysql removing-whitespace


【解决方案1】:

不间断的空格不是正常的空格。

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

或者在其中获取所有其他空格:

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

并且注意字符编码,你似乎有一些问题。

【讨论】:

  • 这个答案对我来说很有意义,但由于某种原因,我没有得到相反的结果。
  • 知道了。这是我使用 8859-1 编码使用的一大块免费代码。一旦我将其切换并进行了一些小调整,此解决方案就奏效了!
  • 是的,编辑我的评论时出现问题。 Str_Replace 给了我黑色菱形,而 preg_replace 最初没有改变这些。感谢您的帮助!
【解决方案2】:

使用这个:

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

【讨论】:

  • 不幸的是,这用带有问号的黑色菱形替换了空格。感谢您的宝贵时间。
  • 您是否碰巧知道任何可能有帮助的字符集,例如 UTF-8?
【解决方案3】:

好吧,更多的代码,但可以工作

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

【讨论】:

  • 已经声明 OP 也希望删除内部空格,trim()rtrim() 只会删除字符串开头和结尾的空白字符。
  • 这会起作用,但我也在尝试删除之前和之后的额外空间。感谢您的宝贵时间。
猜你喜欢
  • 2016-09-15
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 2021-11-13
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多