【问题标题】:Why is there space between my string after concatenation with PHP form?为什么与 PHP 表单连接后我的字符串之间有空格?
【发布时间】:2012-12-31 06:07:06
【问题描述】:

这真的很奇怪,因为我检查了我连接的两个字符串在 HTML 源代码中它们之间没有空格。但是,当 PHP 解析我的 update.php 文件中的文本时,它会返回 string1 string2 而不是预期的输出 string1string2

出了什么问题?

Update.php

<?php

    $string1 = $_POST['string1'];
    $string2 = $_POST['string2'];
    $filename = str_replace(" ", "", substr($string1, 14))
        . str_replace(" ", "", substr($string2, 11));


    echo $filename;
?>

$_POST['string1'] = Exchange Name: Osaka;
$_POST['string2'] = Stock Name: 20; 

【问题讨论】:

  • $_POST["string1"] 和 2 的值是什么
  • 您确定空格是空格,而不是制表符或换行符?
  • @HankyPanky:添加了值。
  • @Michael:我如何检查空格是否是空格而不是制表符或换行符?请指教。
  • @TingPing 我的猜测是您正在检查浏览器中的输出。您要做的是查看输出的源代码,使其不是 html 格式的。将所有可能字符的数组传递给str_replace 而不仅仅是空格,例如str_replace(array(' ', '\n', '\t'), '', $subject);

标签: php forms post concatenation


【解决方案1】:
$string1 = "Exchange Name: Osaka";
$string2 = "Stock Name: 20";
$pattern = '/[\W]/i'; // you can add extra conditions to handle other chars as well
$replacement = "";

echo preg_replace($pattern, $replacement, $string1)
    . preg_replace($pattern, $replacement, $string2);

【讨论】:

  • 警告:preg_replace() [function.preg-replace]: Unknown modifier '\' in D:\wamp\www\update.php on line 11
  • 去掉中间的斜线。应该是$pattern = '/\n\t/i';
【解决方案2】:

可能尝试使用修剪而不是替换。

    trim(substr($string1,14));

希望对您有所帮助。

【讨论】:

  • trim 只会从末端删除空格,而不是在它们位于任何其他位置时
【解决方案3】:

填充文件名后,您可以使用

$filename = str_replace(" ", "", $filename);

但是考虑到我们还没有弄清楚问题出在哪里,这不是一个合适的解决方案,它只是一个修复。所以首先找到问题,这样你就知道它为什么会发生

然后不知何故,您会从发布这些值的表单中获取换行符。试试这个

$filename = str_replace("\r", "", $filename);
$filename = str_replace("\n", "", $filename);

【讨论】:

  • 我刚刚运行了您的代码,它似乎可以按您的预期工作。你确定它为你显示一个空间?
  • 我在 Windows 上运行。不知道会不会影响结果?
  • 查看输出的源代码,看看是否显示有空格或换行符?对我来说,你的代码输出 Osaka20
  • 源输出显示两个字符串由新行分隔。嗯,似乎“空间”问题确实是换行问题。我怎样才能摆脱那条新线?
  • 检查更新。您可以将这 2 个替换合并为一个,只需替换 "\r\n"
【解决方案4】:

我使用以下方法解决了它:

echo str_replace(PHP_EOL, '', $filename);

【讨论】:

    猜你喜欢
    • 2014-11-23
    • 1970-01-01
    • 2017-03-11
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2019-12-21
    相关资源
    最近更新 更多