1. PHP で単語を生成するための 2 つのアイデアまたは原則
1. Windows で com コンポーネントを使用します
2. PHP を使用してコンテンツを doc ファイルに書き込みます
具体的な実装方法は次のとおりです。
2. Windows で com コンポーネントを使用します
原則: com は PHP の拡張クラスであり、office がインストールされているサーバーは自動的に word.application の com を呼び出し、PHP 公式ドキュメント マニュアル: http://www.php.net/manual/en/ を自動的に生成します。クラス.com.php
公式の例を使用してください:
$word = new COM("word.application") or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}n";
//前面に表示
$word->Visible = 1;
//空の文書を開きます
$word->ドキュメント->Add();
//何か奇妙なことをしてください
$word->Selection->TypeText("これはテストです...");
$word->Documents[1]- >SaveAs( "Useless test.doc");
//単語を閉じる
$word->Quit();
//オブジェクトを解放する
$word = null;
?>
個人的な提案: com インスタンス以降 このメソッドの意味を知るには公式ドキュメントを参照する必要がありますが、エディターにはコード プロンプトがないため、非常に不便です 。
3. PHPを使用してコンテンツをdocファイルに書き込みます
この方法は2つの方法に分けられます
1. mht 形式 (HTML に非常に似ています) を生成し、Word に書き込みます
2. 純粋な HTML 形式を Word に書き込みます
1)、mht 形式 (HTML に非常に似ています) を生成し、Word に書き込みます
* HTML コードに基づいて Word ドキュメントのコンテンツを取得します
* 本質的に mht であるドキュメントを作成します この関数は、ファイルのコンテンツを分析し、リモートの場所からページ内の画像リソースをダウンロードします
* この関数はクラス MhtFileMaker に依存します
*この関数は img タグを解析し、src の属性値を抽出します。ただし、src の属性値は引用符で囲む必要があります。そうしないと抽出できません
*
* @param string $content HTML コンテンツ
* @param string $absolutePath Web ページの絶対パス。 HTML コンテンツ内の画像パスが相対パスの場合、関数によって絶対パスが自動的に入力されるように、このパラメータを入力する必要があります。このパラメータは /
で終わる必要があります * @param bool $isEraseLink HTML コンテンツ内のリンクを削除するかどうか
*/
function getWordDocument( $content , $absolutePath = "" , $isEraseLink = true )
{
$mht = new MhtFileMaker();
if ($isEraseLink)
$content = preg_replace( '/
$images = array ( );
$files = array();
$matches = array();
//このアルゴリズムでは、src の後の属性値を引用符で囲む必要があります
if ( preg_match_all('/

;
if ( $imgPath ! = "")
//絶対リンク、プレフィックスなし
elles $ mht-> addcontents( "tmp.html"、$ mht-> getmimeType( "tmp.html")、$ content); $i=0;$i
$image = $images[$i];
if ( @ fopen($image, 'r') )
$imgcontent = mht- >GetMimeType ($image),$imgcontent);
Return $mht->GetFile ();
}
この関数の主な機能は、実際には、HTML コード内のすべての画像アドレスを分析し、それらを 1 つずつダウンロードすることです。画像のコンテンツを取得した後、MhtFileMaker クラスを呼び出して、画像を mht ファイルに追加します。追加の具体的な詳細は MhtFileMaker クラスにカプセル化されます。
利用方法1:リモート呼び出し
$content = file_get_contents($url);
$fileContent = getWordDocument($content,"http://www.yoursite.com/Music/etc/");
$fp = fopen("test.doc", 'w');
fwrite($fp , $fileContent) ;
fclose($fp);
このうち、$content 変数は HTML ソース コードである必要があり、次のリンクは HTML コード内の画像の相対パスを記入できる URL アドレスである必要があります
このうち、$content変数はHTMLソースコードである必要があり、次のリンクはHTMLコード内の画像の相対パスを埋めることができるURLアドレスである必要があります
使用方法 2: ローカルで生成された呼び出し
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no -cache") ;
$wordStr = 'PHP チュートリアル Web サイト--jb51.net';
$fileContent = getWordDocument($wordStr);
$fileName = iconv("utf-8", "GBK", 'PHP チュートリアル' . '_' . $intro . rand(100, 999));
header("Content-Disposition: 添付ファイル名 = . ".doc ");
この関数を使用する前に、MhtFileMaker クラスを含める必要があることに注意してください。このクラスは Mht ドキュメントの生成に役立ちます。
クラス: Mht File Maker
バージョン: 1.2 beta
日付: 2007/02/11
作成者: Wudi
説明: クラスは .mht ファイルを作成できます。
************************************** ********************************/
class MhtFileMaker{
var $config = array();
var $headers = array();
var $headers_exists = array();
var $files = array();
var $boundary;
var $dir_base;
var $page_first;
function MhtFile($config = array()){
}
function SetHeader($header){
$this- > ;headers[] = $header;
$key = strto lower(substr($header, 0, strpos($header, ':')));
$this->headers_exists[$key] = TRUE;
}
function SetFrom($from){
$this->SetHeader("From: $from");
}
function SetSubject($subject){
$this->SetHeader("Subject: $subject") ;
}
関数 SetDate($date = NULL, $istimestamp = FALSE){
if ($date == NULL) {
$date = time();
}
if ($istimestamp = = 本当) {
$date = date('D, d M Y H:i:s O', $date);
}
$this->SetHeader("Date: $date");
}
function SetBoundary($boundary = NULL) ){
if ($boundary == NULL) {
$this->boundary = '--' 。 strtoupper(md5(mt_rand())) 。 '_MULTIPART_MIXED';
} else {
$this->boundary = $boundary;
}
}
関数 SetBaseDir($dir){
$this->dir _base = str_replace("\", "/", realpath($dir));
}
function SetFirstPage($filename){
$this->page_first = str_replace("\", "/", realpath("{$this->dir_base}/$filename "));
}
function AutoAddFiles(){
if (!isset($this->page_first)) {
exit ('最初のページを設定しません。');
$filepath = str_replace($ this->dir_base, '', $this->page_first);
$filepath = 'http://mhtfile' 。 $filepath;
$this->AddFile($this->page_first, $filepath, NULL);
$this->AddDir($this->dir_base);
}
関数 AddDir($dir) {
$handle_dir = opendir($dir);
while ($filename = readdir($handle_dir)) {
if (($filename!='.') && ($filename!='..') && (" $dir/$filename"!=$this->page_first)) {
if (is_dir("$dir/$filename")) {
$this->AddDir("$dir/$filename");
}elseif (is_file("$dir/$filename")) {
$filepath = str_replace($this->dir_base, '', "$dir/$filename");
$filepath = 'http://mhtfile' 。 $filepath;
$this->AddFile("$dir/$filename", $filepath, NULL);
}
}
closedir( $handle_dir);
}
function AddFile($filename, $filepath = NULL, $encoding = NULL){
if ($filepath == NULL) {
$filepath = $filename;
}
$mimetype = $this->GetMimeType($filename);
$filecont = file _get_contents($ filename);
$this->AddContents($filepath, $mimetype, $filecont, $encoding);
}
function AddContents($filepath, $mimetype, $filecont, $encoding = NULL){
if ($ encoding == NULL) {
$filecont = chunk_split(base64_encode($filecont), 76);
$encoding = 'base64';
}
$this->files[] = array('filepath' $ファイルパス,
$mimetype,
'filecont' => 'encoding' => $encoding);
}
関数 CheckHeaders(){
if (!array_key_exists('date ', $this->headers_exists)) {
$this->SetDate(NULL, TRUE);
}
if ($this->boundary == NULL) {
$this->SetBoundary() ;
}
}
function CheckFiles(){
if (count($this->files) == 0) {
return FALSE;
} else {
return TRUE;
}
}
関数 GetFile() {
$this->CheckHeaders();
if (!$this->CheckFiles()) {
exit ('ファイルは追加されませんでした。');
}
$contents = implode("rn", $ this->headers);
$contents .= "rn";
$contents .= "MIME-Version: 1.0rn";
$contents .= "Content-Type: multipart/popular;rn";
$contents .= "tboundary="{$this->境界}";rn";
$contents .= "ttype="" . $this->files[0]['mimetype'] . ""rn";
$contents .= "X-MimeOLE: Mht ファイルによって生成Maker v1.0 betarn";
$contents .= "rn";
$contents .= "これは MIME 形式のマルチパート メッセージです。rn";
$contents .= "rn";
foreach ($this ->ファイルを $file として) {
$contents .= "--{$this->boundary}rn";
$contents .= "Content-Type: $file[mimetype]rn";
$contents 。 = "Content-Transfer-Encoding: $file[encoding]rn";
$contents .= "Content-Location: $file[filepath]rn";
$contents .= "rn";
$contents .= $file ['filecont'];
$contents .= "rn";
}
$contents .= "--{$this->boundary}--rn";
return $contents;
}
関数ファイル( $filename){
$contents = $this->GetFile();
$fp = fopen($filename, 'w');
fwrite($fp, $contents);
fclose($fp);
}
関数 GetMimeType($filename){
$pathinfo = pathinfo($filename);
switch ($pathinfo['extension']) {
case 'htm': $mimetype = 'text/html'; Break;
case 'html': $mimetype = 'text/html'; Break;
case 'txt': $mimetype = 'text/plain'; Break;
case 'cgi': $mimetype = 'text/plain'; Break;
case 'php': $mimetype = 'text/plain'; Break;
case 'css': $mimetype = 'text/css'; Break;
case 'jpg': $mimetype = 'image/jpeg'; Break;
case 'jpeg': $mimetype = 'image/jpeg'; Break;
case 'jpe': $mimetype = 'image/jpeg'; Break;
case 'gif': $mimetype = 'image/gif'; Break;
case 'png': $mimetype = 'image/png'; Break;
デフォルト: $mimetype = 'application/octet-stream'; Break;
}
return $mimetype;
}
}
?>
ポイント评:この方法の欠点は、承認量生成のダウンロードをサポートしていないため、1 つのヘッダーが 1 つあるためです(無论远程使用は本件で承認されており、ヘッダー面のみを出力できます)、循環生成の場合、結果も 1 つだけです単語生成(もちろん上面を修正できる方法で来实现)
2.纯HTML格式写入word
原理:
ob_start を利用して html 页面先存储起来(解决一下页面多个ヘッダー、大量生成可能)、その後、doc 文档コンテンツの書き込みに利用
代記入:
{
function start()
{
ob_start();
echo ' xmlns:w= "urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">';
}
関数 save($path)
{
echo "";
$data = ob_get_contents();
ob_end_clean();
$this->wirtefile ($path,$data);
}
function wirtefile ($fn,$data) )
{
$fp=fopen($fn,"wb");
fwrite($fp,$data);
fclose($fp);
}
}
PHP10086 | http://www.jb51.net |
PHP10086 | http://www.jb51.net |

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

PHPセッションは、アプリケーションのパフォーマンスに大きな影響を与えます。最適化方法には以下が含まれます。1。データベースを使用してセッションデータを保存して応答速度を向上させます。 2。セッションデータの使用を削減し、必要な情報のみを保存します。 3.非ブロッキングセッションプロセッサを使用して、同時実行機能を改善します。 4.セッションの有効期限を調整して、ユーザーエクスペリエンスとサーバーの負担のバランスを取ります。 5.永続的なセッションを使用して、データの読み取り時間と書き込み時間を減らします。

phpsesionsareserver-side、whilecookiesareclient-side.1)Sessionsionsionsoredataontheserver、aremoresecure.2)cookiesstoredataontheclient、cookiestoresecure、andlimitedinsizeisize.sesionsionsionivationivationivationivationivationivationivationivate

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ホットトピック









