【问题标题】:PHP remove hidden character from shell_execPHP从shell_exec中删除隐藏字符
【发布时间】:2014-08-06 11:51:28
【问题描述】:

您好,我在尝试将 php 变量从 shell_exec 结果保存到 mysql 数据库时遇到了一些问题。

我想在ubuntu中获取我的本地ip系统,所以我使用

<?php
    $ip = shell_exec("/sbin/ifconfig eth0 | grep 'inet addr:'| cut -d: -f2 | awk '{ print $1}' | tr -d ' '");
?>

我将 $ip 变量插入 mysql 数据库,显然执行结果中有一些隐藏字符

+------------+-----------------+-------------------+------------+------------+
| monitor_id | ip_address      | total_transaction | total_user | total_hits |
+------------+-----------------+-------------------+------------+------------+
|         70 | 
10.151.32.187
 |                 5 |          0 |          4 |
+------------+-----------------+-------------------+------------+------------+

好像有很多空格,我已经用下面的语法修剪了空格:

str_replace(" ","",$ip);

和许多其他方式,但它返回相同。有人可以帮忙吗?请..

【问题讨论】:

    标签: php mysql linux shell ubuntu


    【解决方案1】:

    尝试使用 PHP 函数 trim。它的作用:

    去掉开头和结尾的空格(或其他字符) 字符串。

    【讨论】:

      【解决方案2】:

      str_replace 仅替换您传递给它的确切字符串。造成问题的不是空间;这是换行符。而且你不会替换那些。

      你可以这样说

      $ip = str_replace(["\n", "\r"], "", $ip);
      

      在将它们放入数据库之前删除它们。但实际上,由于 IP 地址根本不应该有空格,所以你最好说

      $ip = trim($ip);
      

      这将从字符串的任一端删除 any 空格*(包括空格、CR 和换行符)(如果它来自操作系统,那应该是您唯一需要担心的空白)。

      * 任何 ASCII 空格,无论如何。如果你想要 UTF-8 支持,你可能想试试preg_replace('/\p{Z}+/us', '', $ip)。但这在这里可能有点矫枉过正。您正在运行的程序不会输出更多奇特类型的空白。)

      【讨论】:

      • 感谢您的详细解释:)
      【解决方案3】:

      trim() 将替换字符串开头和结尾的所有空白字符。

      如果要替换所有空白字符,无论它们在字符串中的什么位置,都可以像这样使用 preg_replace:

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

      【讨论】:

        猜你喜欢
        • 2013-02-21
        • 1970-01-01
        • 1970-01-01
        • 2016-05-04
        • 2011-10-28
        • 2020-05-04
        • 2011-11-01
        • 2013-01-17
        • 1970-01-01
        相关资源
        最近更新 更多