source

php는 따옴표로 (101)를 삽입한다.

lovecheck 2022. 11. 28. 21:16
반응형

php는 따옴표로 (101)를 삽입한다.

단순 배열 삽입

이렇게 생겼을 거야

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

그리고 그것은 이것을 돌려줄 것이다.

 lastname,email,phone

좋아요, 그래서 제가 대신 이걸 할 수도 있어요.

$array = array('lastname', 'email', 'phone');
$comma_separated = implode("','", $array);
$comma_separated = "'".$comma_separated."'";

그리고 나는 내가 원하는 멋진 csv 문자열을 가지고 있다.

 'lastname','email','phone'

더 좋은 방법이 있을까요? 제가 뭔가 놓치고 있는 건가요? inclode에 대한 선택적 매개 변수가 있어야 한다고 생각합니다.

$array = array('lastname', 'email', 'phone');


echo "'" . implode("','", $array) . "'";

다음을 사용할 수 있습니다.

function add_quotes($str) {
    return sprintf("'%s'", $str);
}

$csv =  implode(',', array_map('add_quotes', $array));

데모

또한 파일에 쓰려는 경우에도 있습니다.

$ids = sprintf("'%s'", implode("','", $ids ) );

아니, 네가 하는 방식은 괜찮아. implode()는 1~2개의 파라미터만 받습니다(배열을 지정하는 경우 빈 문자열로 조각을 결합합니다).

이 방법이 더 빠를지는 모르겠지만, 사용의 방법으로 코드 행을 보존할 수 있습니다.

부터

$array = array('lastname', 'email', 'phone');
$comma_separated = implode("','", $array);
$comma_separated = "'".$comma_separated."'";

수신인:

$array = array('lastname', 'email', 'phone');
$comma_separated = "'".implode("','", $array)."'";

루프를 사용하는 경우는, 다음의 조작도 가능합니다.

$array = array('lastname', 'email', 'phone');
foreach($array as &$value){
   $value = "'$value'";
}
$comma_separated = implode(",", $array);

데모: http://codepad.org/O2kB4fRo

$id = array(2222,3333,4444,5555,6666);
$ids = "'".implode("','",$id)."'";

또는

$ids = sprintf("'%s'", implode("','", $id ) );

또는 다음과 같은 함수를 만들 수도 있습니다.

function implode_with_quotes(array $data)
{
    return sprintf("'%s'", implode("', '", $data));
}

다음 코드를 사용해 보십시오.

$data = 'ABC,DEF,GHI';

$str = "'".str_replace(',',"','",$data)."'";


echo $str;

fopen/fputcsv 서브시스템을 회피하려면 관련 어레이에서 이스케이프된 CSV 문자열을 작성하는 스니펫을 다음에 나타냅니다.

$output = '';
foreach ($list as $row) {
  $output .= '"' . implode('", "', array_values($row)) . '"' . "\r\n";
}

아니면 물건 목록에서...

foreach ($list as $obj) {
  $output .= '"' . implode('", "', array_values((array) $obj)) . '"' . "\r\n";
}

그런 다음 원하는 대로 문자열을 출력할 수 있습니다.

어레이가 필요한 용도에 따라 다음 옵션을 선택할 수 있습니다.

$array = array('lastname', 'email', 'phone');
echo json_encode($array);

이렇게 하면 문자열 주위에 '[]'와 ']'가 표시됩니다.이러한 문자열은 원하는지 원하지 않을 수 있습니다.

데이터 유출을 잊지 마세요!fputcsv 함수를 사용하지 않고 CSV 파일에 데이터를 저장하거나 SQL 쿼리에 데이터를 저장하는 경우 다음 코드를 사용합니다.

$comma_separated = "'" . implode("','", array_map('addslashes', $array)) . "'";

입력 배열에 작은 따옴표 또는 백슬래시 문자가 포함되어 있는 경우 이 코드를 사용하면 SQL 주입이나 데이터 조각화가 방지됩니다.

다른 솔루션은 다음과 같이 innode + preg_replace를 사용하여 구현됩니다.

$a = ['A', 'B', 'C'];
implode(',', preg_replace('/^(.*)$/', '"$1"', $a)); // "A","B","C"
$b = [];
implode(',', preg_replace('/^(.*)$/', '"$1"', $b)); // empty string

이렇게 하면 어레이가 비어 있는지 확인할 필요가 없어집니다.

이 방법으로도 할 수 있다

<?php
$csv= '\'' . join(array('lastname', 'email', 'phone'),'\',').'\'';
echo $csv;
?>

이게 네가 하려는 일이라고 생각해

$array = array('lastname', 'email', 'phone');
echo "'" . implode("','", explode(',', $array)) . "'";

언급URL : https://stackoverflow.com/questions/6102398/php-implode-101-with-quotes

반응형