키 포인트 $_SERVER["REMOTE_ADDR"]
이 기사는 PSR-0 표준을 사용하여 CSV 데이터를 생성하기 위해 내장 기능을 사용하여 기능을 사용하여 클래스를 자동으로로드하여 고정 길이를 구문 분석하는 것을 포함하여 5 가지 실제 PHP 코드 스 니펫을 소개합니다. 데이터 및 간단한 PHP 클래스를 사용하면 html 템플릿을 사용하고 를 사용하여 http get and post 요청을 발행하기 위해 CURL의 대안으로 사용합니다.
fputcsv()
1
우리는 종종 다차원 배열 데이터를 CSV로 변환하려고 시도합니다.
<code>unpack()
file_get_contents
기능을 사용하는 것이 가장 좋습니다. 다음 코드는 데이터 배열에서 CSV 출력을 구성하는 논리를 캡슐화합니다. 제목 열을 사용할 수있는 선택적 매개 변수가 포함되어 있으며 CSV를 브라우저로 직접 새로 고치거나 출력을 문자열로 반환할지 여부. 그것에 대한 영리한 점은 함수가 작동하려면 열린 파일 핸들이 필요하기 때문에 와 함께 스트림을 사용하는 것입니다. 의 상위 디렉토리를 지정하지 않습니다. 대부분의 자동 로더가 구현 한 추가 "채우기"는 코드를 통해 위치를 지정 해야하는 경우 편리하지만 PHP 포함 경로에 이미 디렉토리를 사용하는 경우에는 필요하지 않습니다. <vendor name>(<namespace>)</namespace></vendor>
<vendor name></vendor>
여기서 영리한 것은 정규 표현식으로, 전달 된 이름을 구성 요소로 나눕니다. 밑줄이 네임 스페이스 부품에 특별한 의미가 없기 때문에 이러한 부품을 식별해야하므로 밑줄과 백 슬래시를 맹목적으로 교체 할 수 있습니다.
<code class="language-php"><?php $csv = ""; foreach ($data as $row) { $csv .= join(",", $row) . "\n"; } echo $csv; ?></code>3을 사용하여 고정 길이 데이터를 구문 분석하십시오
$match[2]
$match[1]
PHP 매뉴얼의 의 문서는 "주어진 형식에 따라 이진 문자열을 배열로 포장 풀고"이진 데이터 이스케이프 사용의 사용 예를 보여줍니다. 명백하지 않은 것은 형식 지정자 "A"가 문자를 의미하기 때문에 (결국 문자열은 일련의 비트와 바이트가 아니라)이 함수를 사용하여 고정 길이 스트링을 구문 분석 할 수 있다는 것입니다.
를 사용하여 위의 예는 다음과 같이 더 우아하게 다시 작성할 수 있습니다.이 경우 형식 문자열은 일련의 A 일 뿐이며 문자 데이터를 지정하고 특정 필드의 문자 수를 지정하며 검색된 데이터는 슬래시로 분리 된 최종 배열에 할당됩니다. 예를 들어,
는 6자를 구문 분석하고 로 제공합니다.4PHP 커뮤니티에서는 템플릿 화에 대한 합의가 많지 않았습니다. 우리는 모두 HTML과 PHP를 분리하는 것이 바람직하다는 데 동의하지만 Smarty 또는 Twig와 같은 템플릿 라이브러리를 사용하는 것과는 충돌이 있습니다. 어떤 사람들은 PHP 자체가 템플릿 엔진이며 라이브러리의 속도, 구문 등을 반대한다고 지적합니다. 다른 사람들은 템플릿 시스템에서 제공 한 DSL을 사용함으로써 큰 도움이된다고 주장합니다. 한 가지 트레이드 오프는 PHP로 작성된 매우 작은 클래스로 HTML을 템플릿하여 코드를 간결하게 유지하는 것입니다.
성숙한 템플릿 엔진이 아닙니다. 템플릿으로 지정된 포함 파일에서 액세스 할 수있는 키/값 데이터 쌍을 수집하는 깔끔한 보조 클래스입니다. 먼저, 뷰에서
<code class="language-php"><?php $csv = ""; foreach ($data as $row) { $csv .= join(",", $row) . "\n"; } echo $csv; ?></code>클래스의 인스턴스를 생성하고 디렉토리 이름을 전달하여 후속 템플릿 파일을 찾을 수 있습니다 (관련 파일을 그룹화 할 수 있음). 그런 다음 템플릿으로 채워야하는 값은
메소드 또는 알몸 속성으로 제공됩니다. 모든 값이 지정되면 Template
메소드를 호출하여 템플릿을 렌더링 할 수 있습니다. set()
out()
예제의 파일은 다음과 같습니다.
<code class="language-php"><?php function toCSV(array $data, array $colHeaders = array(), $asString = false) { $stream = ($asString) ? fopen("php://temp/maxmemory", "w+") : fopen("php://output", "w"); if (!empty($colHeaders)) { fputcsv($stream, $colHeaders); } foreach ($data as $record) { fputcsv($stream, $record); } if ($asString) { rewind($stream); $returnVal = stream_get_contents($stream); fclose($stream); return $returnVal; } else { fclose($stream); } } ?></code>
mytemplate.php
의 두 번째 선택적 매개 변수는 템플릿 컨텐츠가 브라우저로 직접 새로 고치지 않고 문자열로 반환되도록 지정할 수 있습니다.
<code class="language-php"><?php spl_autoload_register(function ($classname) { $classname = ltrim($classname, "\"); preg_match('/^(.+)?([^\]+)$/U', $classname, $match); $classname = str_replace("\", "/", $match[1]) . str_replace(["\", "_"], "/", $match[2]) . ".php"; include_once $classname; }); ?></code>5를 Curl
out()
및
위의 예제는 게시물을 통해 파일을 업로드하는 데 필요한 문자를 보여줍니다. 컨텍스트 어레이는 키 "메소드", "헤더"및 "컨텐츠"를 사용하여 트랜잭션
를 지정합니다. 口. 복잡한 요청 (예 : 파일 업로드)에 file_get_contents()
를 사용할 때 먼저 모의 웹 양식을 작성하여 Firefox 또는 FireBug가 활성화 된 유사한 도구를 통해 실행 한 다음 요청에 포함 된 내용이 약간 도움이 될 수 있습니다. 거기에서 포함 할 중요한 헤더 요소를 추론 할 수 있습니다.
(PHP 코드 스 니펫에 대한 FAQ)
(원래 FAQ 부품의 내용은 코드 스 니펫 자체와 관련이 없으며 보충 설명이기 때문에 FAQ 부분은 여기에서 생략됩니다. 실제 요구에 따라 직접 추가하거나 수정할 수 있습니다).
위 내용은 PHP 마스터 | 5 영감 (그리고 유용한) PHP 스 니펫의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!