PHP从shell_exec中删除隐藏的字符

时间:2014-06-16 15:37:33

标签: php mysql linux shell ubuntu

嗨我在尝试从shell_exec结果中将php变量保存到mysql数据库时遇到了一些麻烦。

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

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

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

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

看起来有很多空格,我已经用以下语法修剪了空白:

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

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

3 个答案:

答案 0 :(得分:2)

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

  

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

答案 1 :(得分:1)

str_replace仅替换您传递的确切字符串。这不是引起问题的空间;这是新行。而且你没有取代那些。

你可以说像

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

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

$ip = trim($ip);

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

无论如何,

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

答案 2 :(得分:0)

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

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

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