The basic usage of the wordwrap function is to wrap a block of text at a specified length. The function prototype is as follows:
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">wordwrap</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$width</span></span><span> = </span><span><span class="hljs-number">75</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span class="hljs-variable">$break</span></span><span> = </span><span><span class="hljs-string">"\n"</span></span><span> , </span><span><span class="hljs-keyword">bool</span></span><span> </span><span class="hljs-variable">$cut</span></span><span> = </span><span class="hljs-literal">false</span></span><span> )
</span></span>
$str: The original string to be wrapped.
$width: The maximum line width, default is 75.
$break: The line break character, default is \n.
$cut: If set to true, words are forcibly split at the given width. Default is false, meaning breaks only occur at whitespace.
The ideal line length varies depending on the context. For emails, articles, or long-form text, a shorter width (around 60–80 characters) ensures readability across devices and screen sizes. For logs or data output, longer widths (around 120 characters) may be more suitable since display limitations are less of a concern.
Although \n is the default break character, different platforms use different newline conventions (e.g., Windows uses \r\n). To ensure cross-platform compatibility, explicitly specify the line break when calling wordwrap:
<span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">wordwrap</span></span><span>(</span><span><span class="hljs-variable">$text</span></span><span>, </span><span><span class="hljs-number">80</span></span><span>, </span><span><span class="hljs-string">"\r\n"</span></span><span>);
</span></span>
This helps avoid formatting issues across operating systems, especially when handling text files or exchanging data between platforms.
The cut parameter forces long words to be split into multiple lines. While sometimes necessary for consistency, it can reduce readability by breaking words. It’s best to enable this option only when appropriate. For example, when processing text with long URLs, setting cut = true prevents overflow:
<span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">wordwrap</span></span><span>(</span><span><span class="hljs-variable">$text</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-string">"\n"</span></span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span></span>
While wordwrap can enforce line breaks, too many breaks make text disjointed and harder to read. Choosing an appropriate line width is key. Excessive wrapping can cause readers to lose context. A width of around 80 characters strikes a good balance.
When processing HTML content, directly applying wordwrap may wrap tags, causing layout issues. To avoid this, remove or replace tags with appropriate breaks before applying wordwrap. A simple method is using strip_tags before wrapping:
<span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-variable">$htmlContent</span></span><span>);
</span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">wordwrap</span></span><span>(</span><span><span class="hljs-variable">$text</span></span><span>, </span><span><span class="hljs-number">80</span></span>, </span><span><span class="hljs-string">"\n"</span></span>);
</span></span>
Sometimes, the original string already contains multiple paragraphs or line breaks. In such cases, loop through each line to ensure it meets the width limit. For example, split by paragraphs, then apply wordwrap to each:
<span><span><span class="hljs-variable">$paragraphs</span></span><span> = </span><span><span class="hljs-title function_ invoke__">explode</span></span>(</span><span><span class="hljs-string">"\n"</span></span>, </span><span><span class="hljs-variable">$text</span></span>);
</span><span><span class="hljs-keyword">foreach</span></span> (</span><span><span class="hljs-variable">$paragraphs</span></span> </span><span><span class="hljs-keyword">as</span></span> </span><span><span class="hljs-variable">$key</span></span> => </span><span><span class="hljs-variable">$paragraph</span></span>) {
</span><span><span class="hljs-variable">$paragraphs</span></span>[</span><span><span class="hljs-variable">$key</span></span>] = </span><span><span class="hljs-title function_ invoke__">wordwrap</span></span>(</span><span><span class="hljs-variable">$paragraph</span></span>, </span><span><span class="hljs-number">80</span></span>, </span><span><span class="hljs-string">"\n"</span></span>);
}
</span><span><span class="hljs-variable">$text</span></span> = </span><span><span class="hljs-title function_ invoke__">implode</span></span>(</span><span><span class="hljs-string">"\n"</span></span>, </span><span><span class="hljs-variable">$paragraphs</span></span>);
</span></span>
This ensures each paragraph follows formatting rules without removing blank lines between them.
Although wordwrap is simple and convenient, it may impact performance when processing very large text, especially with repeated calls. To optimize:
For large text, preprocess first—such as trimming excess spaces or normalizing irregular breaks—before applying wordwrap.
When calling wordwrap frequently, avoid recalculating each time by caching or reusing results.
The wordwrap function in PHP is a powerful tool for formatting long text into readable lines. Properly setting line length, choosing the right break character, and carefully using the cut parameter are essential for clear and elegant text display. Adjusting parameters for different contexts and handling special cases flexibly can significantly improve user experience.