search
HomeBackend DevelopmentPHP TutorialA more detailed tutorial on generating static pages with PHP_PHP tutorial
A more detailed tutorial on generating static pages with PHP_PHP tutorialJul 21, 2016 pm 03:22 PM
phponeanddynamicTutorialyesserverComparegenerateprogramendScriptdetailedstaticpage

1. PHP scripts and dynamic pages.
PHP script is a server-side script program that can be mixed with HTML files through methods such as embedding, or it can process user requests in the form of templates in the form of classes, function encapsulation, etc. One way or another, the basics of it are this. The client makes a request for a certain page -----> The WEB server introduces the designated corresponding script for processing -----> The script is loaded into the server -----> PHP parsing specified by the server The script is parsed by the browser to form HTML language form----> The parsed HTML statement is sent back to the browser in the form of a package. It is not difficult to see from this that after the page is sent to the browser, PHP no longer exists and has been converted and parsed into HTML statements. The client request is a dynamic file. In fact, there is no real file there. PHP parses it into the corresponding page and then sends it back to the browser. This way of handling pages is called "dynamic pages".
Second, static page.
Static pages refer to pages that actually exist on the server side and only contain HTML and JS, CSS and other client-side scripts. The way it is handled is. The client makes a request for a certain page----> The WEB server confirms and loads a certain page----> The WEB server passes the page back to the browser in the form of a package. From this process, we can compare the dynamic pages and we can see. Dynamic pages need to be parsed by the PHP parser of the WEB server, and usually need to connect to the database and perform database access operations before they can form an HTML language information package; while static pages do not need to be parsed or connected to the database, and can be sent directly, which can greatly Reduce server pressure, improve server load capacity, and greatly improve page opening speed and overall website opening speed. But its disadvantage is that the request cannot be processed dynamically, and the file must actually exist on the server.
3. Templates and template analysis.
The template means that the content html file has not yet been filled in. For example:
temp.html
Code:

Copy code The code is as follows:


{ title }

this is a { file } file's templets


PHP processing:
 templetest.php
Code:
$title = "TwoMax International test template";
$file = "TwoMax Inter test templet,
author:Matrix@Two_Max";
 $fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{ file }",$file,$content);
$content .= str_replace ("{ title }",$title,$content);
echo $content;
?>

Template parsing processing is the process of filling (content) the results obtained after PHP script parsing into the template. Usually with the help of template classes. Currently, the more popular template parsing classes include phplib, smarty, fastsmarty and so on. The principle of template parsing processing is usually replacement. There are also some programmers who are accustomed to putting judgment, looping and other processing into template files and processing them with parsing classes. The typical application is the block concept, which is simply a loop processing. The PHP script specifies the number of loops, how to loop through, etc., and then the template parsing class implements these operations.
Okay, after comparing the advantages and disadvantages of static pages and dynamic pages, now let’s talk about how to use PHP to generate static files.
PHP generating static pages does not refer to PHP’s dynamic parsing and outputting HTML pages, but refers to using PHP to create HTML pages. At the same time, because HTML is not writable, if the HTML we create is modified, it needs to be deleted and regenerated. (Of course, you can also choose to use regular rules to modify it, but I personally think that it is faster than deleting and regenerating it, which is not worth the gain.)
Return to the topic. PHP fans who have used PHP file operation functions know that there is a file operation function fopen in PHP, which opens a file. If the file does not exist, try to create it. This is the theoretical basis on which PHP can be used to create HTML files. As long as the folder used to store HTML files has write permission (ie permission definition 0777), the file can be created. (For UNIX systems, Win systems do not need to be considered.) Taking the above example as an example, if we modify the last sentence and specify to generate a static file named test.html in the test directory:
Code:
Copy code The code is as follows:

$title = "TwoMax Inter test template";
$file = "TwoMax Inter test templet,
author:Matrix@Two_Max";
$ fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{ file }" ,$file,$content);
$content .= str_replace ("{ title }",$title,$content);
// echo $content;
$filename = "test/test. html";
$handle = fopen ($filename,"w"); //Open the file pointer and create the file
/*
Check whether the file is created and writable
*/
if (!is_writable ($filename)){
die ("File: ".$filename." is not writable, please check its properties and try again!");
}
if (!fwrite ($handle,$content)){ //Write information to file
die ("Generate file".$filename."Failed!");
}
fclose ($handle); // Close pointer
die ("Create file".$filename."Success!");
?>

 Reference for solutions to common problems in practical applications:
 1. Article list problem:
 
Create a field in the database and record the file name. Every time a file is generated, the automatically generated file name is stored in the database. For recommended articles , just point to the page in the specified folder where the static files are stored. Use PHP operations to process the article list, save it as a string, and replace this string when generating the page. For example, add the mark {articletable} to the table where the article list is placed on the page, and in the PHP processing file:
Code:
Copy code The code is as follows :

$title = "TwoMax International Test Template";
$file = "TwoMax Inter test templet,
author: Matrix@Two_Max";
$fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace (" { file }",$file,$content);
$content .= str_replace ("{ title }",$title,$content);
// Start generating list
$list = '' ;
$sql = "select id,title,filename from article";
$query = mysql_query ($sql);
while ($result = mysql_fetch_array ($query)){
$list .= ''.$result['title'].'';
}
$content .= str_replace ("{ articletable }",$list,$content);
//End of generating list
// echo $content;
$filename = "test/test.html";
$handle = fopen ($filename,"w"); //Open the file pointer and create the file
/*
 Check whether the file is created and writable
*/
if (!is_writable ($filename)){
die ("File: ".$filename." is not writable, please check Try again after its attributes! ");
}
if (!fwrite ($handle,$content)){ //Write information to the file
die ("Generate file".$filename." Failed! ");
}
fclose ($handle); //Close pointer
die ("Create file".$filename."Success! ");
?>

 Second, the paging problem.
If we specify paging, there will be 20 articles per page. The articles in a certain sub-channel list have The database query is 45, so first we get the following parameters through the query: 1, the total number of pages; 2, the number of articles per page. The second step, for ($i = 0; $i
Copy code The code is as follows:
$fp = fopen ("temp .html","r");
$content = fread ($fp,filesize ("temp.html"));
$onepage = '20';
$sql = "select id from article where channel='$channelid'";
$query = mysql_query ($sql);
$num = mysql_num_rows ($query);
$allpages = ceil ($num / $onepage);
for ($i = 0;$iif ($i == 0){
$indexpath = "index.html";
} else {
$indexpath = "index_".$i."html";
}
$start = $i * $onepage;
$list = '';
$sql_for_page = "select name ,filename,title from article where channel='$channelid' limit $start,$onepage";
$query_for_page = mysql_query ($sql_for_page);
while ($result = $query_for_page){
$list .= ''.$title.'';
}
$content = str_replace ("{ articletable }",$list,$content);
if (is_file ($indexpath)){
@unlink ($indexpath); //If the file already exists, delete it
}
$handle = fopen ($indexpath,"w"); //Open the file pointer and create the file
/*
Check whether the file is created and writable
*/
if (!is_writable ($indexpath)){
echo "File: ".$indexpath." is not writable, please check its properties Try again! "; //Modify to echo
}
if (!fwrite ($handle,$content)){ //Write information to the file
echo "Generate file".$indexpath." failed! "; //Modify to echo
}
fclose ($handle); //Close pointer
}
fclose ($fp);
die ("Generating paging file is completed, as generated Incomplete, please check the file permission system and regenerate! ");
?>


The general idea is this. Other data generation, data input and output checking, paging content pointing, etc. can be added to the page as appropriate.
In the actual article system processing process, there are still many issues to be considered. There are many differences from dynamic pages that need to be paid attention to. But the general idea is this, and other aspects can be drawn by analogy.
Use PHP to create a template framework for static websites
Templates can improve the structure of the website. This article explains how to use a new feature of PHP 4 and the template class to skillfully use templates to control page layout in a website composed of a large number of static HTML pages.
Outline:
========================================
Separate functionality and layout
Avoid duplication of page elements
Static website template framework
================================== ===
Separating functionality and layout
First let’s look at the two main purposes of applying templates:
Separating functionality (PHP) and layout (HTML)
Avoiding pages Element Repeating
The first purpose is the most talked about purpose, and it envisions a situation where a group of programmers write PHP scripts that generate the content of the page, while another group of designers designs the HTML and graphics to control the page's content. Final appearance. The basic idea of ​​separating functionality and layout is to enable these two groups of people to write and use an independent set of files: programmers only need to care about files that only contain PHP code, and do not need to care about the appearance of the page
; and page designers You can use the visual editor you are most familiar with to design the page layout without worrying about breaking any PHP code embedded in the page.
If you have watched a few tutorials about PHP templates, then you should already understand how templates work. Consider a simple page part: the top of the page is the header, the left is the navigation bar, and the rest is the content area. This kind of website can have the following template file:
Copy the code The code is as follows:


< ;img src="sitelogo.jpg">


Foo

Bar
You can see how the page is constructed from these templates: the main template controls the layout of the entire page; the header template and leftnav template control Common elements of the page. Identifiers inside curly braces "{}" are content placeholders. The main benefit of using templates is that interface designers can edit these files according to their own wishes, such as setting fonts, modifying colors and graphics, or completely changing the layout of the page. Interface designers can edit these pages with any ordinary HTML editor or visualization tool, because these files only contain HTML code, without any PHP code.
The PHP code is all saved in a separate file, which is the file actually called by the page URL. The web server parses the file through the PHP engine and returns the results to the browser. Generally, PHP code always dynamically generates page content, such as querying a database or performing certain calculations. Here is an example:
Copy code The code is as follows:

// example.php
require('class.FastTemplate.php');
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm' ,
'header' => 'header.htm',
'leftnav' => 'leftnav.htm' ) );
// The PHP code here sets $content so that it contains the appropriate The page content
$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse( 'LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');
?>

Here we are using the popular FastTemplate template class, but the basic idea is the same for many other template classes. First, you instantiate a class and tell it where to find template files and which template file corresponds to which part of the page; then, generate the page content and assign the result to the content identifier; then, parse each template file in turn, The template class will perform the necessary replacement operations; finally, the parsing results will be output to the browser.
This file is entirely composed of PHP code and does not contain any HTML code, which is its biggest advantage. Now, PHP programmers can focus on writing the code that generates the content of the page, rather than worrying about how to generate the HTML to properly format the final page.
You can use this method and the above files to construct a complete website. If the PHP code generates page content based on the query string in the URL, such as http://www.foo.com/example.php?article=099, you can construct a complete magazine website based on this.
It’s easy to see that there is a second benefit to using templates. As shown in the example above, the navigation bar on the left side of the page is saved as a separate file. We only need to edit this template file to change the navigation bar on the left side of all pages of the website.
Avoid duplication of page elements
“This is really good”, you may be thinking, “My website is mainly composed of a large number of static pages. Now I can remove the common parts of them from all pages and update these The public part is too troublesome. In the future, I can use templates to create a unified page layout that is easy to maintain. "But things are not that simple. "A large number of static pages" reveals the problem.
Please consider the above example. This example actually only has one example.php page. The reason why it can generate all pages of the entire website is that it uses the query string in the URL to dynamically construct pages from information sources such as databases.
Most of us run websites that don’t necessarily have database support. Most of our website is composed of static pages, and then PHP is used to add some dynamic functions here and there, such as search engines, feedback forms, etc. So, how to apply templates on this kind of website?
The simplest method is to copy a PHP file for each page,
and then set the variables representing the content in the PHP code to the appropriate page content in each page. For example, suppose there are three pages, namely home, about, and product. We can use three files to generate them respectively. The contents of these three files are similar to:
Copy code The code is as follows:

/ / home.php
require('class.FastTemplate.php');
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav' => 'leftnav.htm' ) );
$content = "

Welcome Visit


A more detailed tutorial on generating static pages with PHP_PHP tutorial

Hope you like this website

";
$tpl->assign ('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');
?>

Obviously, this There are three problems with this approach: we have to duplicate this complex, template-involved PHP code for every page, which makes the page difficult to maintain as well as duplicating common page elements; now the file is a mix of HTML and PHP code; assigning values ​​to content variables will It becomes very difficult because we have to deal with a lot of special characters.
The key to solving this problem is to separate the PHP code and HTML content. Although we cannot delete all the HTML content from the file, we can move out the vast majority of the PHP code.
Static website template framework
First, we write template files for all common elements of the page and the overall layout of the page as before; then delete the common parts from all pages, leaving only the page content; and then add Add three lines of PHP code to each page, as follows:
Copy the code The code is as follows:

php



Hello


Welcome


A more detailed tutorial on generating static pages with PHP_PHP tutorial
Hope you like this website

?>

This method basically solves the various problems mentioned earlier. There are only three lines of PHP code in the file now, and none of them directly refer to the template, so the possibility of changing this code is extremely slim. In addition, since the HTML content is outside the PHP markup, there is no problem with handling special characters. We can easily add these three lines of PHP code to all static HTML pages.
The require function introduces a PHP file that contains all necessary template-related PHP code. The pageStart function sets the template object and page title, and the pageFinish function parses the template and generates the result and sends it to the browser.
How is this achieved? Why is the HTML in the file not sent to the browser until the pageFinish function is called? The answer lies in a new feature of PHP 4, which allows the content output to the browser to be intercepted into a buffer. Let's take a look at the specific code of prepend.php:
Copy the code The code is as follows:

require('class.FastTemplate.php');
function pageStart($title = '') {
GLOBAL $tpl;
$tpl = new FastTemplate('.');
$ tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav'=> 'leftnav.htm' ) );
$tpl->assign('TITLE', $title);
ob_start();
}
function pageFinish() {
GLOBAL $tpl;
$ content = ob_get_contents();
ob_end_clean();
$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN ');
}
?>

The pageStart function first creates and sets up a template instance, and then enables output caching. After this, all HTML content from the page itself will go into the cache. The pageFinish function takes out the contents from the cache, then specifies these contents in the template object, and finally parses the template and outputs the completed page.
This is the entire working process of the entire template framework. First write a template that contains common elements for each page of the website, then delete all common page layout codes from all pages and replace them with three lines of PHP code that never need to be changed; then add the FastTemplate class file and prepend.php to the include path , so that you get a website whose page layout can be controlled centrally, which has better reliability and maintainability, and large-scale modifications at the website level become quite easy.
  The download package for this article contains
a runnable sample website, and its code comments are more detailed than the previous code comments. The FastTemplate class can be found at http://www.thewebmasters.net/, the latest version number is 1.1.0, and there is a small patch there to ensure that the class runs correctly in PHP 4. The classes in the download code of this article have been corrected by this patch.
PHP easily generates static pages
Copy code The code is as follows:

/*
* File name: index.php
*/
require "conn.php";
$query = "select * from news order by datetime desc";
$result = mysql_query($ query);
?>



NEWS






< ;/tr>

while($re = mysql_fetch_array($result)){
?>





}
?>




title Publication time
">= $re["title"]?> = $re["datetime"]?>
Add News




Copy code The code is as follows:

/*
File name: AddNews.php
Simple dynamic addition to generate static news page
#
# Table structure `news`
#
CREATE TABLE `news` (
`newsid` int(11) NOT NULL auto_increment,
`title` varchar(100) NOT NULL default '',
`content` text NOT NULL ,
`datetime` datetime NOT NULL default '0000-00-00 00:00:00',
KEY `newsid` (`newsid`)
) TYPE=MyISAM AUTO_INCREMENT=11;
*/
?>


Two functions to generate static web pages using PHP
In recent years, the World Wide Web (also known as the Global Information Network, or WWW) has continued to change The face of information processing technology. The Web has quickly become an effective medium for people and businesses to communicate and collaborate. Almost all information technology fields are generally affected by the WEB. Web access brings more users and more data, which means more stress on servers and databases and slower and slower response times for end users. Compared with constantly increasing CPU, disk drives and memory to keep up with this growing demand, staticizing WEB dynamic web pages should be a more practical and economical choice.

The specific implementation function of using PHP to realize the staticization of WEB dynamic web pages is as shown in function gen_static_file()

Copy the code The code is as follows :

function gen_static_file($program, $filename)
{
$program 1= "/usr/local/apache/htdocs/php/" . $program;
$filename1 = "/usr/local/apache/htdocs/ static_html/" . $filename;
$cmd_str = "/usr/local/php4/bin/php " . $program1 . " } " . $filename1 . " ";
system($cmd_str);
echo $filename . " generated.〈br〉";
}


This function is the key to achieving staticization , that is, the PHP dynamic page program is not sent to the browser, but is entered into a file named $filename (Figure 2). Among the two parameters, $program is the PHP dynamic page program, $filename is the name of the generated static page (you can make your own naming rules according to your needs, this is very important, see below), /usr/local/php4/bin/php is PHP has the function of inputting programs into files. System is the function in PHP that executes external commands. We can also see that all PHP programs that generate dynamic pages need to be placed in the /php/ directory, and all newly generated static pages will appear in the /static_html/ directory (these paths can be set according to specific needs).

Let’s give a specific example to see how the static page of college_static.php is generated.

Copy code The code is as follows:

function gen_college_static ()
{
for ($i = 0; $i 〈= 32; $i++〉
{
putenv("province_id=" . $i); //*.php file is used when fetching data from the database.
$filename. = "college_static". $i . ".html";
gen_static_file("college_static.php", $filename);
}


From this function we can see By calling the function gen_static_file(), college_static.php is staticized and becomes 33 static pages college.static0.html~college.static33.html. Of course, $filename will change as $I changes. Get the value directly from the database to control the number and name of the generated static pages. The calls of other programs to the generated static pages should be consistent with the naming rules of the static pages.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/324773.htmlTechArticle1. PHP scripts and dynamic pages. PHP script is a server-side script program that can be mixed with HTML files through methods such as embedding, or in the form of classes, function encapsulation, etc., in the form of templates...
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Golang中最好的缓存库是什么?我们来一一比较。Golang中最好的缓存库是什么?我们来一一比较。Jun 19, 2023 pm 07:51 PM

Golang中最好的缓存库是什么?我们来一一比较。在编写Go代码时,经常需要使用缓存,例如存放一些比较耗时的计算结果或者从数据库中读取的数据等,缓存能够大大提高程序的性能。但是,Go语言没有提供原生的缓存库,所以我们需要使用第三方的缓存库。在这篇文章中,我们将一一比较几个比较流行的Go缓存库,找到最适合我们的库。GocacheGocache是一个高效的内存缓

如何通过PHP在FTP服务器上进行目录和文件的比较如何通过PHP在FTP服务器上进行目录和文件的比较Jul 28, 2023 pm 02:09 PM

如何通过PHP在FTP服务器上进行目录和文件的比较在web开发中,有时候我们需要比较本地文件与FTP服务器上的文件,以确保两者之间的一致性。PHP提供了一些函数和类来实现这个功能。本文将介绍如何使用PHP在FTP服务器上进行目录和文件的比较,并提供相关的代码示例。首先,我们需要连接到FTP服务器。PHP提供了ftp_connect()函数来建立与FTP服务器

Go语言Web框架对比:gin vs. echo vs. irisGo语言Web框架对比:gin vs. echo vs. irisJun 17, 2023 pm 07:44 PM

随着Web开发的需求不断增加,各种语言的Web框架也逐渐多样化,Go语言也不例外。在许多Go语言的Web框架中,gin、echo和iris是三个最受欢迎的框架。在这篇文章中,我们将比较这三个框架的优缺点,以帮助您选择适合您的项目的框架。gingin是一个轻量级的Web框架,它具有高性能和灵活性的特点。它支持中间件和路由功能,这使得它非常适合构建RESTful

比较Java爬虫框架:哪个是最佳选择?比较Java爬虫框架:哪个是最佳选择?Jan 09, 2024 am 11:58 AM

探寻最佳Java爬虫框架:哪个更胜一筹?在当今信息时代,大量的数据在互联网中不断产生和更新。为了从海量数据中提取有用的信息,爬虫技术应运而生。而在爬虫技术中,Java作为一种强大且广泛应用的编程语言,拥有许多优秀的爬虫框架可供选择。本文将探寻几个常见的Java爬虫框架,并分析它们的特点和适用场景,最终找到最佳的一种。JsoupJsoup是一种非常受欢迎的Ja

深度对比Flutter和uniapp:探究它们的异同和特点深度对比Flutter和uniapp:探究它们的异同和特点Dec 23, 2023 pm 02:16 PM

在移动应用开发领域,Flutter和uniapp是两个备受关注的跨平台开发框架。它们的出现使得开发者能够快速且高效地开发同时支持多个平台的应用程序。然而,尽管它们有着相似的目标和用途,但在细节和特性方面存在一些差异。接下来,我们将深入比较Flutter和uniapp,并探讨它们各自的特点。Flutte是由Google推出的开源移动应用开发框架。Flutter

在Java中,我们如何比较StringBuilder和StringBuffer?在Java中,我们如何比较StringBuilder和StringBuffer?Aug 28, 2023 pm 03:57 PM

StringBuffer对象通常可以安全地在多线程环境中使用,其中多个线程可能会尝试访问同一个StringBuffer对象同时。StringBuilder是线程安全的StringBuffer类的替代品,它的工作速度要快得多,因为它没有同步>方法。如果我们在单个线程中执行大量字符串操作,则使用此类可以提高性能。示例publicclassCompareBuilderwithBufferTest{&nbsp;&nbsp;publicstaticvoidmain(String[]a

C程序用于比较两个矩阵是否相等C程序用于比较两个矩阵是否相等Aug 31, 2023 pm 01:13 PM

用户必须输入两个矩阵的顺序以及两个矩阵的元素。然后,比较这两个矩阵。如果矩阵元素和大小都相等,则表明两个矩阵相等。如果矩阵大小相等但元素相等不相等,则显示矩阵可以比较,但不相等。如果大小和元素不匹配,则显示矩阵无法比较。程序以下是C程序,用于比较两个矩阵是否相等-#include<stdio.h>#include<conio.h>main(){&nbsp;&nbsp;intA[10][10],B[10][10];&nbsp;&nbsp;in

MySQL和Oracle:对于数据加密和安全传输的支持程度比较MySQL和Oracle:对于数据加密和安全传输的支持程度比较Jul 12, 2023 am 10:29 AM

MySQL和Oracle:对于数据加密和安全传输的支持程度比较引言:数据安全在如今的信息时代中变得愈发重要。从个人隐私到商业机密,保持数据的机密性和完整性对于任何组织来说都至关重要。在数据库管理系统(DBMS)中,MySQL和Oracle是两个最受欢迎的选项。在本文中,我们将比较MySQL和Oracle在数据加密和安全传输方面的支持程度,并提供一些代码示例。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),