我试图从字符串中删除空格,但只是从字符串的开头和结尾处删除。 Everythink工作正常,但在将字符串插入数据库之后没有空格,但在同一个地方是"�"。
这是我的代码:
$synonimy = $_POST['fsynoms'];
$synonimyPodzielone = explode( ',', $synonimy );
for($k=0; $k < count($synonimyPodzielone); $k++)
{
for($m=0; $m<strlen($synonimyPodzielone[$k]);$m++)
{
if($synonimyPodzielone[$k][$m]==" ")
{
$synonimyPodzielone[$k][$m]="";
}
else
{
break;
}
}
}
我也尝试过使用str_replace trim和同样的问题。
知道怎么做吗?
答案 0 :(得分:1)
trim($str)
函数(http://php.net/manual/en/function.trim.php)很难错误地使用,你只是不存储返回值吗? (PHP中的trim
函数不会修改参数,而是返回一个删除了空格的新字符串。)
$synonimy = $_POST['fsynoms'];
$synonimy = trim( $synonimy );
insert_into_database( $synonimy );
答案 1 :(得分:1)
PHP修剪:http://php.net/manual/en/function.trim.php应该让生活更轻松。
for($m=0; $m<strlen($synonimyPodzielone[$k]);$m++)
{
$synonimyPodzielone[$k][$m] = trim($synonimyPodzielone[$k][$m]);
}
答案 2 :(得分:1)
您正在寻找的是trim
。在array_map
的帮助下,您甚至可以跳过for循环。
$input = " foo , bar , baz , qux ";
$words = explode(",", $input);
$wordsTrimmed = array_map("trim", $words);
$csvString = implode(",", $wordsTrimmed);
echo $csvString; // foo,bar,baz,qux
你当然可以把它弄得更整洁:
function trimWords($string, $glue = ",") {
return implode($glue, array_map("trim", explode($glue, $string)));
}
$input = " foo , bar , baz , qux ";
$csvString = trimWords($input);
echo $csvString; // foo,bar,baz,qux
答案 3 :(得分:0)
甚至更简单。
$synonimy = trim($_POST['fsynoms']);
insert_into_database($synonimy);
答案 4 :(得分:0)
使用strtr也是可能的(并且快速):
$synonimy = trim($_POST['fsynoms']);
$synonimy = strtr($synonimy, array(' ,' => ',', ', '=>','));
注意:如果您的字符串包含要删除的重复空格,在这种情况下您可以使用:
$synonimy = preg_replace('~\s*(,)\s*|\A\s+|\s+\z~u', '$1', $_POST['fsynoms']);
处理unicode字符串。