Prevent Widows with PHP and JavaScript
One of the small touches you can add to your website is preventing "widows" in your H1-H6 tags. For those who aren't aware, a widow (in terms of text and headings) means only one word of a title wraps to the next line -- a bit of an ugly sight if you ask me. The way to prevent widows with just text is by adding a between the last two words of the text instead of a regular space character. Here are two snippets for preventing widows in your website: one using JavaScript and another using PHP!
// With JavaScript
var text = text.replace(/\s(?=[^\s]*$)/g, ' ');
// With PHP
$text = preg_replace( '|([^\s])\s+([^\s]+)\s*$|', '$1 $2', $text);
As I mentioned originally, widows are not necessarily a bug, but a small visual quirk that just doesn't look great. Keep these regex usages handy so you can prevent such a smudge!
![Conquering Impostor Syndrome]()
Two years ago I documented my struggles with Imposter Syndrome and the response was immense. I received messages of support and commiseration from new web developers, veteran engineers, and even persons of all experience levels in other professions. I've even caught myself reading the post...
![Welcome to My New Office]()
My first professional web development was at a small print shop where I sat in a windowless cubical all day. I suffered that boxed in environment for almost five years before I was able to find a remote job where I worked from home. The first...
![Create Classy Inputs Using MooTools’ OverText]()
The MooTools More library is a goldmine. A treasure chest. Pirates booty, if you will (and, of course, I will). More is full of plugins that add a lot of class and functionality to your website with minimal effort.
![Build a Slick and Simple MooTools Accordion]()
Last week I covered a smooth, subtle MooTools effect called Kwicks. Another great MooTools creation is the Accordion, which acts like...wait for it...an accordion! Now I've never been a huge Weird Al fan so this is as close to playing an accordion as...
Great idea to take care of all headings at once!
Only concern I would have would be search engines. Are there repercussions to adding this markup? Would it confuse/deter proper search engine indexing?
I’m sure Google, etc take javascript into account in some way, but I would do this via javascript instead of PHP to lessen the chances of hurting search rankings (if that’s important to you).
I’ve never seen the ?= operator in regular expression. And I don’t find such in my regex cheat sheet. Can you please explain how this particular reg ex is working? Thanks.
The
?=is a look-ahead operator. It allows you to specify an expression that matches what comes next. In the example abovethe expression is stating that the character after the space must be zero-or-more non-whtie-space characters followed by the end of the string. In other words, it makes sure that it only replaces the last space in the heading with a non-breaking space.
PHP not cancer of the Web