【问题标题】:preg_replace and possible json issuespreg_replace 和可能的 json 问题
【发布时间】:2014-08-01 04:20:11
【问题描述】:

我需要在任何换行符的开头替换一个空格。我正在使用 JSON 发送 POST 值,并怀疑这可能与它无法正常工作有关。

$str='
This is a string.
   This should be left justified by removing whitespaces preceding it.
';
preg_replace('/^\s+/', '', $str);

运行它,按预期工作。当我尝试将它与我的 POST 数组一起使用时,空格仍然存在。为什么?

JSON 是否参与其中?

编辑:

澄清一下,发送过来的数组不是 JSON 编码的,它是一个使用 JSON POST 的 PHP 数组。

我只是尝试稍微修改一下我的正则表达式,并且至少可以验证 preg_replace 正在做什么。如果我这样做:/\s+/,所有空格都会被删除。所以,我知道它在某种程度上起作用了。

我的正则表达式正确吗?

编辑#2

这让我发疯了。我想我会在我的 javascript 中修剪空白并收工,但我得到了完全相同的结果。

还有其他情况会阻止此正则表达式匹配吗?

/^\s+/

【问题讨论】:

  • 不.. 好主意。我正在这样做:$str=preg_replace('/^\s+/', '', $_POST['myValue']);,然后在我需要的地方调用$str
  • ltrim()? ......
  • 嗯。如果可行,我愿意尝试使用它。谢谢。我会让你知道会发生什么。
  • @Deadooshka,不。 :( 我得到同样的东西,空格。
  • 这意味着$str 可能包含编码空格。  %20

标签: php


【解决方案1】:

这个呢:

$str='
This is a string.
   This should be left justified by removing whitespaces preceding it.
';
preg_replace('/^\s+/m', '', $str);

我刚刚添加了m 修饰符。见http://us3.php.net/manual/en/reference.pcre.pattern.modifiers.php

【讨论】:

  • 好的,它所做的就是从字符串中删除所有返回和换行符,有效地将所有内容放在一行中。
  • 不在测试脚本中,它没有。换句话说,如果我只是将你的代码放入一个 php 文件并在命令行上执行php thefile.php,我会得到预期的结果。所以也许你正在以其他方式丢失换行符。
  • 这就是我怀疑 JSON 可能在其中发挥作用的原因。这只是一个简单的 POST,然后在我的 PHP 脚本中,我通过 preg_replace 运行它。我知道,这真的很奇怪。我同意,如果不涉及 JSON,它会按预期呈现。
  • 那么,也许你真正的问题与 preg_replace 无关。即,您的问题的答案是您的正则表达式没有什么问题。在替换之前做一些事情,比如var_dump ($_POST['myValue']);,然后是var_dump ($str);。此外,要确定发送的内容(包括编码的行尾等),请通过浏览器的开发工具查看 html 标头中的 POST 信息。
  • 好的,谢谢。我会看看,看看我能找到什么。如果没有其他人回答这个问题,我会回来接受它。感谢您的帮助。
【解决方案2】:

试试这个:

foreach($trim_val as $key => $value) {
    $trim_val[$key] = trim($value);
}
$json = json_encode($trim_val);

已经有人给出了解决方案,check

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 2011-08-24
    相关资源
    最近更新 更多