PHP删除'';如果字符串不';不存在

PHP删除'';如果字符串不';不存在,php,Php,我正在运行以下代码: $stmt = $pdo_conn->prepare("SELECT * from admin where support_emails = :support_emails and logged = :logged and disabled = :disabled "); $stmt->execute(array(':support_emails' => 'Y', ':logged' => 'in', ':disabled' =>

我正在运行以下代码:

$stmt = $pdo_conn->prepare("SELECT * from admin where support_emails = :support_emails and logged = :logged and disabled = :disabled ");
        $stmt->execute(array(':support_emails' => 'Y', ':logged' => 'in', ':disabled' => ''));
        $records = $stmt->fetchAll(PDO::FETCH_ASSOC);
        if(count($records) > 0) {
            foreach($records as $records2) {
                if(filter_var($records2["email"], FILTER_VALIDATE_EMAIL)) {
                    $SupportEmailList = $records2["email"].', '.$SupportEmailList;
                }
                if(!empty($SupportEmailList)) {
                    $SupportEmailList = substr($SupportEmailList, 0, -2); // removes last 2 characters (`, `) from end of string
                }
            }
        }
返回

email1@domain1.com, email2@domain2.com
当我在SQL中运行时

我补充说:

if(!empty($SupportEmailList)) {
                    $SupportEmailList = substr($SupportEmailList, 0, -2); // removes last 2 characters (`, `) from end of string
                }
如果最后一个结果不存在,但似乎正在创建以下内容,则要从字符串末尾删除“
”,“
”:

email1@domain1.com, email2@domain2.c
而不是:

email1@domain1.com, email2@domain2.com
试试看。可以将字符列表作为第二个参数传递,以选择要从字符串的开头/结尾修剪的内容:

$example_1 = 'email1@domain1.com, email2@domain2.com';
$example_2 = 'email1@domain1.com, email2@domain2.com, ';

$example_1 = trim($example_1, ', ');
$example_2 = trim($example_2, ', ');

var_dump($example_1); // string(38) "email1@domain1.com, email2@domain2.com"
var_dump($example_2); // string(38) "email1@domain1.com, email2@domain2.com"

var_dump(explode(', ', $example_1));
// array(2) { [0]=> string(18) "email1@domain1.com" [1]=> string(18) "email2@domain2.com" }
试试看。可以将字符列表作为第二个参数传递,以选择要从字符串的开头/结尾修剪的内容:

$example_1 = 'email1@domain1.com, email2@domain2.com';
$example_2 = 'email1@domain1.com, email2@domain2.com, ';

$example_1 = trim($example_1, ', ');
$example_2 = trim($example_2, ', ');

var_dump($example_1); // string(38) "email1@domain1.com, email2@domain2.com"
var_dump($example_2); // string(38) "email1@domain1.com, email2@domain2.com"

var_dump(explode(', ', $example_1));
// array(2) { [0]=> string(18) "email1@domain1.com" [1]=> string(18) "email2@domain2.com" }

我建议将结果保存在一个数组中,并使用(或join)以逗号连接它们

这样,您就不必处理尾随逗号问题

$email_address = array();

foreach($records as $records2) {
    if(filter_var($records2["email"], FILTER_VALIDATE_EMAIL)) {
        array_push($email_address, $records2["email"]);
    }
}

$comma_separated_email_address = implode(",", $email_address);

echo $comma_separated_email_address ;

我建议将结果保存在一个数组中,并使用(或join)以逗号连接它们

这样,您就不必处理尾随逗号问题

$email_address = array();

foreach($records as $records2) {
    if(filter_var($records2["email"], FILTER_VALIDATE_EMAIL)) {
        array_push($email_address, $records2["email"]);
    }
}

$comma_separated_email_address = implode(",", $email_address);

echo $comma_separated_email_address ;

您可以使用
分解
内爆
再次拆分字符串

$data = explode(',', $elements);
$cleanedData = implode(',', $data);
您可以修剪数据中的空间修剪$data数组中的所有值

for ($i = 0; $i < count($data); $i++)
    $data[$i] = trim($data[$i]);
for($i=0;$i
您可以再次使用
分解和
内爆来拆分字符串

$data = explode(',', $elements);
$cleanedData = implode(',', $data);
您可以修剪数据中的空间修剪$data数组中的所有值

for ($i = 0; $i < count($data); $i++)
    $data[$i] = trim($data[$i]);
for($i=0;$i
我不明白您的问题,请删除“,”如果它不存在?无论如何,您应该使用
PDO::fetch_NUM
获取数据。这样,您将收到一系列电子邮件,如
['email1@domail.com', 'email2@mail.com“]
然后如果你不喜欢
”email1@domail.com, email2@mail.com“
用于用字符串连接元素。

我不理解您的问题,请删除”“如果它不存在?无论如何,您应该使用
PDO::fetch_NUM
获取数据。这样,您将收到一系列电子邮件,如
['email1@domail.com', 'email2@mail.com“]
然后如果你不喜欢
”email1@domail.com, email2@mail.com“
用于用字符串连接元素。

执行以下操作:

$emails  = " email1@domain1.com , fsdfsdffdsffds , email2@domain2.com,sddsfsdsd ";
$emails = array_map('trim',explode(',',$emails));

$out = array_map(function($email){
                return (filter_var($email, FILTER_VALIDATE_EMAIL)) ? $email : null;
             },$emails);

$emails = implode(',',array_filter($out));
print_r($emails);
// email1@domain1.com,email2@domain2.com
做它:


您想将每个emailadres添加到由分隔的字符串中,?是的,基本上创建一个字符串,其中所有从数据库返回的电子邮件地址由逗号分隔。您想将每个emailadres添加到由分隔的字符串中,?是的,基本上创建一个字符串,其中所有从数据库返回的电子邮件地址由逗号分隔
从字符串的开头和结尾修剪字符(
)。你想做什么?如果要按
拆分,
请尝试
explode()
。trim仅用于字符串的开头和结尾。@SenseeException我刚才回答OP的问题:从字符串结尾删除“,”。尽管这似乎取决于某种解释。我回答了一个关于trim是否仅删除“,”,"自始至终,。已删除问题注释:-)
trim()
修剪字符串开头和结尾的字符(
)。你想做什么?如果要按
拆分,
请尝试
explode()
。trim仅用于字符串的开头和结尾。@SenseeException我刚才回答OP的问题:从字符串结尾删除“,”。尽管这似乎取决于某种解释。我回答了一个关于trim是否仅删除“,”,"自始至终,。问题注释已删除:-)