如何使用php在每50个单词后插入一个字符串

时间:2011-08-22 08:50:24

标签: php

我必须在每52个单词之后插入一个<br>标记,以便它显示换行符,否则段落会一直继续增加其宽度而不是高度。我还有其他更好的方法,请告诉我。感谢。

我的代码

<?php

$str = "Hello world. My name is Yash Mathur and I am a student. 
        I need help in this question as this is getting on my nerves, so I came to 
        stackoverflow.com 
        to seek for an answer. Please help me insert a line break after every 52 characters. 
        Thanks in advance!";
$len = strlen($str);
if ($len > 52) {
    $str = substr($str, 0, 52) . "<br>";
}
echo $str;
?>

我需要以某种方式将它放在一个循环中,每隔52个字符插入<br>标记。

4 个答案:

答案 0 :(得分:9)

我假设你最终想要实现的目标,只是一个看起来很体面的段落,其行长不会太长,以致难以阅读。我相信这是一个美容问题,可以在应用程序的表示层(即样式表)中更好地解决。

在属于该段落的样式中,您只需添加“width:250px”(250px是任意值)即可将文本约束为由段落宽度定义的自动换行框。

我不会在PHP中这样做,除非有一个非常有效的理由,因为,如果您需要更改段落的外观,那么您将不得不深入研究您的PHP代码。这可能看起来微不足道,但在几个月内你可能甚至不记得首先编写这样的代码。这将导致轻微的头痛,并且浪费大量时间来搜索这种格式化功能。

请重新考虑您的策略。

答案 1 :(得分:4)

尝试使用以下代码:

$original = "some long string";
$parts = str_split($original, 50);
$final = implode("<br>", $parts);

答案 2 :(得分:1)

你可以尝试这样的事情。但这并没有检查你是否在一个单词的中间分割一条线,你最终会得到一个丑陋的输出。尝试使用CSS代替:)

<?php
$str = "Hello world. My name is Yash Mathur and I am a student. I need help in this question as this is getting on my nerves, so I came to 
stackoverflow.com to seek for an answer. Please help me insert a line break after every 52 characters. Thanks in advance!";
for ($i = 0; $i < mb_strlen($str); $i++) {
   if ($i % 52){
    echo mb_substr($str, 0 , 52) . '<br />';
    $str = mb_substr($str, 52, mb_strlen($str));
    }
}
?>

答案 3 :(得分:1)

这应该可以解决问题:

$string='Lorem ipsum...';
$parts=explode(' ',$string);
$result='';
foreach ($parts as $key=>$part)
{
  $result.=$part.' ';
  if ($key%50==49)
    $result.='<br>';
}

但更好的方法是使用wordwrap()