嗨我在尝试从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);
和许多其他方式但它返回相同。有人可以帮忙吗?请..
答案 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);