How to change font size using PHP

Last updated on November 8th, 2024 at 12:48 pm

Dynamically adjust the text or font size on your website using PHP. The logic for switching text sizes is outlined below. You may have noticed various websites offering the ability to modify text size in real-time and wondered how this functionality is implemented. The following code illustrates this process. To achieve this, we will utilize PHP, CSS, and some HTML.

Step 1: Create a Web page

Begin by creating a HTML document, complete with placeholder content. Here’s an example (Listing A):

Listing A:

<html>
<head>
</head>
<body>

<!– font size buttons –>
Text size: <a href=”resize.php?s=small”>small</a> | <a href=”resize.php?s=medium”>medium</a> | <a href=”resize.php?s=large”>large</a>

<p />

<!– dummy page content –>
Loremipsum dolor sit amet,
consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim
ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat.
Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur.
Excepteursintoccaecatcupidatat non proident, sunt in culpa qui
officiadeseruntmollitanim id estlaborum.

</body>
</html>

Pay special attention to the text hyperlinks at the top of this page. Each hyperlink points to the script resize.php, and passes it the selected text size through the URL GET method.

Save this document to your Web server directory with a .php extension—for example, index.php.

Step 2: Create stylesheets

Next, create stylesheets for each of the available text sizes for the page: small.css, medium.css and large.css. Here’s what small.css looks like:

#main {
font-size: 10px
}

In a similar manner, create medium.css and large.css, with font sizes of 17px and 25px respectively. Save these stylesheets to the same directory as the Web page created in the previous step.

Step 3: Create the text resizing mechanism using Session (if needed)

As previously described, the Web page “knows” which stylesheet to load by looking in a pre-defined session variable. This session variable is controlled by the script resize.php, (Listing B) which is activated whenever a user clicks one of the text-sizing buttons at the top of each page. Here’s what resize.php looks like:

Listing B

<?php
// start session
// import selected size into session
session_start();
$_SESSION[‘textsize’] = $_GET['s'];
header("Location: " . $_SERVER[‘HTTP_REFERER’]);
?>

This is fairly simple. When a user selects a new text size, resize.php receives that size value through the GET method and stores it in the session variable $_SESSION[‘textsize’]. It then redirects the browser back to the page from where it came.

Of course, there’s still one missing component: the intelligence that lets the page detect which text size is currently selected and load the appropriate stylesheet. To add this, pop open your Web page index.php, and add the following lines at the beginning of the page (Listing C):

Listing C

<?php
// start session
// import variables
session_start();
// set default text size for this page
if (isset($_SESSION['textsize'])) {
$_SESSION['textsize'] = $_GET['s'];
$size=$_SESSION['textsize'];
}
else if(isset($_GET['s']))
{
$size=$_GET['s'];
}
else
{
$size="medium";
}
?>

You should also add a stylesheet link between the <head>…</head> elements, as follows:

<link rel="stylesheet" href="<?php echo $_SESSION['textsize']; ?>.css" type="text/css">

Here’s (Listing D) what the completed simple resize.php will look like: (with session logic)

Listing D

<?php
// start session
// import variables
session_start();

// set default text size for this page
if (isset($_SESSION['textsize'])) {
$_SESSION['textsize'] = $_GET['s'];
$size=$_SESSION['textsize'];
}
else if(isset($_GET['s']))
{
$size=$_GET['s'];
}
else
{
$size="medium";
}
?>

<html>
<head>
<link rel="stylesheet" href="<?php echo $size; ?>.css" type="text/css">
</head>
<body>

<!– font size buttons –>
Text size: <a href="resize.php?s=small">small</a> | <a href="resize.php?s=medium">medium</a> | <a href="resize.php?s=large">large</a>

<p />

<!– dummy page content –>
<div id="main">
Loremipsum dolor sit amet,
consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim
ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat.
Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur.
Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.
 </div>
</body>
</html>

It should be easy to understand how this works. When the Web page is loaded, it restores the current session, checks the $_SESSION[‘textsize’] variable to see which text size is currently selected, and then dynamically loads the corresponding stylesheet through the <link… /> element. This causes the page to automatically re-render in the correct size.

Using PHP and CSS in this combination is slightly different from the traditional approach, which uses JavaScript to dynamically alter CSS styles. The advantage of using PHP instead of JavaScript is that you’re not dependent on the client supporting JavaScript, nor do you need to worry about creating browser-specific workarounds. Perhaps you will find a use for this tip the next time you sit down to design a Web site. Happy coding!

Demo

2 Comments

  1. Vimax Pills

    Fine….keep the spirits high…

  2. Pns

    a nice tutorial