Php 从字符串中删除额外的引号
所以我的数据库中有很多有问题的值。 有两个栏目,一个是电子邮件。有些电子邮件是这样存储的“foo@foobar.com,开始处的引号无效。我希望将其转换为foo@foobar.com。 类似地,还有另一个名为company的字段,其中包含类似于stackoverflow“的数据,结尾处的引号也需要删除 我已经编写了这段代码,但由于某些原因,这并没有删除引号。 我做错了什么? 欢迎提出任何建议Php 从字符串中删除额外的引号,php,mysql,oop,Php,Mysql,Oop,所以我的数据库中有很多有问题的值。 有两个栏目,一个是电子邮件。有些电子邮件是这样存储的“foo@foobar.com,开始处的引号无效。我希望将其转换为foo@foobar.com。 类似地,还有另一个名为company的字段,其中包含类似于stackoverflow“的数据,结尾处的引号也需要删除 我已经编写了这段代码,但由于某些原因,这并没有删除引号。 我做错了什么? 欢迎提出任何建议 global $conn; try { $sta
global $conn;
try
{
$statement= $conn->query("SELECT * from emails");
$statement->setFetchMode(PDO::FETCH_ASSOC);
while($rows = $statement->fetch())
{
$email=$rows['emailid'];
$company=$rows['company'];
$len = strlen($company);
if($email{0} == '"')
{
//problem at start
//fix there.
$updated = substr($email, 1);
//now update
try
{
$statement = $conn->prepare("UPDATE emails set emailid = :email where indexid = :indexid");
$statement->bindParam(':email',$updated);
$statement->bindParam(':indexid',$row['indexid']);
$statement->execute();
$statement->closeCursor();
return true;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
elseif($company{$len-1} == '"')
{
$updated = substr($company, 0, -1);
//now update
try
{
$statement = $conn->prepare("UPDATE emails set company = :company where indexid = :indexid");
$statement->bindParam(':company',$updated);
$statement->bindParam(':indexid',$row['indexid']);
$statement->execute();
$statement->closeCursor();
return true;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
else
{
echo "";
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
您可以使用修剪:
trim($text, " \"'");
从
文本
变量的开头和结尾删除空格和引号是很重要的,为什么不干脆str_replace
?在if语句中返回true;它只运行一次,因为返回将终止循环。如果这不是问题所在-添加一些调试。SQL语句正在运行吗?它选择了正确的条目吗?你的substr通话正常吗?找出哪个部分不起作用。您可以使用mysqlreplace在数据库中一次性删除不需要的字符串function@andrewsi我从if和else中删除了return true,它工作正常。但是,它只修复一个条目一次。不会一次修复所有问题。假设有3个错误,那么我需要运行脚本3次。