【问题标题】:Can't get rid of /r/n无法摆脱 /r/n
【发布时间】:2015-10-03 12:58:08
【问题描述】:

我探索了所有以前的问题和解决方案,但它们都不适用于我的情况。

我有一个接受员工 ID 的输入文本区域。最终用户可以使用逗号、回车、空格来分隔多个员工 ID,我需要将任何分隔符更改为逗号。

这是我的代码:

$emplids = preg_replace('/[,\t\n\r\s]+/',",",$emplids);

然后,我只需要保留数字和逗号:

$emplids = preg_replace("/[^X0-9,]/", "", $emplids);

然后我需要将它们存储到一个数组中:

$emplids = explode(",", $emplids);

现在只有最终用户在员工 id 之间放置逗号可以工作,换行不能工作。

我尝试了双倍配额:

$emplids = preg_replace("/[,\t\n\r\s]+/",",",$emplids);

它也不起作用。

这似乎是一个小问题,但它确实需要我几个小时。任何提示都非常感谢!

【问题讨论】:

  • Replacing \r\n with PHP 的可能重复项
  • 你想摆脱\r\n\n\r吗?
  • 应该是/r/n,我试试看!
  • 光,我刚才试过 preg_replace("/[,\r\n]+/",",",$emplids) 。它不起作用。
  • 您尝试使用trim($emplids) 吗?

标签: php string replace


【解决方案1】:

或者你可以通过一个 id 只能包含数字的规则来获取所有的 id,没有别的。

$input = <<<EOF
123 356 353,255
2424,535 35
EOF;

preg_match_all('/(\d+)/',$input, $matches);
print_r($matches[1]);

【讨论】:

  • 非常感谢!我会试一试的。
【解决方案2】:

把它放在这里,因为它在评论中会很丑:

php > $x = '\n'; // single quotes
php > $y = "\n"; // double quotes
php > var_dump($x, $y);
string(2) "\n"
string(1) "
"

注意引号样式的差异,以及引号对 PHP 所看到的字符串中的内容的影响:'-引用的字符串不理解任何 \ 转义,\'\\ 除外。 '-quoted 字符串中的任何其他转义字符只是一个反斜杠,后跟该字符。

【讨论】:

  • 谢谢!我将其更改为 preg_replace('/[,\\r\\n]+/',",",$emplids) 。没有工作。
  • preg_replace("/[,\r\n]+/",",",$emplids) 。没有工作。 :-( 尝试其他人...
  • 我真的意识到这是引用问题。太感谢了!将报告任何进展。
  • 您需要显示输入文本的示例。除非我们知道将要应用于什么,否则我们无法帮助使用正则表达式。
  • 用 ' ' 把 \ 改成 \' 就可以了!其他方式都行不通。 :-) 谢谢马克 B!我应该包括输入示例。是 12345/r/n67890
【解决方案3】:

终于找到了真正的原因。

我包含了一个使用 clean 函数的脚本:

if($_POST) {
        $_POST = clean($_POST);
        echo "<pre>" . print_r($_POST,1) . "</pre>";

    }

在我的脚本中, $emplids = $_POST['emplids']; ...... $emplids = explode(",",preg_replace("/[^X0-9,]/", "", preg_replace('/[,\t\n]+/',",",$emplids))) ;

如果删除 clean 函数,其中的单个 ' ' 和 / 可以很好地协同工作!

【讨论】:

    猜你喜欢
    • 2013-06-14
    • 2014-08-07
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 2015-04-06
    • 2013-06-20
    相关资源
    最近更新 更多