【问题标题】:How to wrap words of string every 1000 characters in php如何在php中每1000个字符换行字符串的单词
【发布时间】:2012-07-15 17:31:39
【问题描述】:

我有一些大字符串,以及一些必须用一些更改替换的单词数组,比如在链接中换行。第一个问题是包装整个单词或组合单词。第二个问题是每 1000 个字符至少执行上一步。

$string="lalala word lalala blah, blah lalala combination of words lalala lalala...";  
$patterns=array('word','combination of words');  
$replacements=array('<a href="#">word</a>','<a href="#">combination of words</a>');  

举个例子,我之前必须用sn-p做什么?

【问题讨论】:

  • 伙计们,除非您也可以评论原因,否则不要投反对票。 @arsey,你有任何 PHP 编程技能吗?你试过什么代码?
  • 是的,我有一些技能。我试试这个: preg_replace($patterns, $replacemants, $string);
  • @Steven:向下箭头的工具提示解释了为什么投反对票:“这个问题表明没有研究工作;它不清楚或没有用。”
  • 我用'\b(word)\b'来包装整个单词,但这没有帮助

标签: php regex arrays preg-replace


【解决方案1】:

听起来你在寻找wordwrap()。然后,您可以使用 preg_replace_callback() 将其应用于您的搜索模式并进行替换:

foreach ($patterns as $pattern) {
    $regex = '/' . preg_quote($pattern, '/') . '/';
    $string = preg_replace_callback($regex, function($match) {
        return '<a href="#">'
            . wordwrap(htmlspecialchars($match), 1000, '<br />')
            . '</a>';
    }, $string);
}

【讨论】:

    【解决方案2】:

    解决方案:

     <?php
            function set_keys_by_words($content, $key, $words,$before,$after) {
            $positions = array();
            $string = '';
            for ($i = 0; $i < count($words); $i++) {
    
                $string = preg_replace('/\b' . $words[$i] . '\b/ui', $key . $words[$i], $content);
                $position = mb_strpos($string, $key);
    
                if ($position != '') {
                    $positions[(int) $position] = $words[$i];
                }
            }
            ksort($positions);
            $word = '';
            $number = '';
            $i = 0;
            foreach ($positions as $k => $v) {
                $i++;
                if ($i == 1) {
                    $number = $k;
                    $word = $v;
                }
            }
            if ((int) $number) {
                $word_len = strlen($word);
                $part_after = preg_replace('/\b' . $word . '\b/ui', $before . $word . $after, mb_substr($content, 0, $number + $word_len));
                echo $part_after . mb_substr($content, $number + $word_len, 1000);
                $content = mb_substr($content, $number + $word_len + 1000);
                if ($content != '') {
                    set_keys_by_words($content, $key, $words);
                }
            } else if ($number == '' && $content != '') {
                echo $content;
            }
        }
        ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多