1

長い単語をそれぞれスパンタグでラップする必要があります。例:

$string = 'aaaaaaaaaaaaaaaa{}^?¿*!-<a href="#">link here</a>aaaaaaaaaa<br />aaaa';

これを印刷する必要があります:

(htmlタグを無視して8文字ずつカット)

"<span>aaaaaaaa</span>
<span>aaaaaaaa</span>
<span>{}^?¿*!-</span>
<a href="#">link here</a>
<span>aaaaaaaa</span>
aa
<br />
aaaa"

Facebookを作るもののようなもの(<span class="word_break"></span>)

フェイスブックコード:

<span>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</span><wbr></wbr><span class="word_break"></span>

何か案が?:)

本当にありがとう

4

2 に答える 2

0

わかりました、私は少し離れていました。str_split(); が必要です。これにより、実行可能な配列が得られます。

$str = 'aaaaaaaaaaaaaaaa{}^?¿*!-<a href="#">link here</a>aaaaaaaaaa<br />aaaa';

print_r(str_split($str, 8));

**This will return** 

(
    [0] => aaaaaaaa
    [1] => aaaaaaaa
    [2] => {}^*!-<a
    [3] =>  href="#
    [4] => ">link h
    [5] => ere</a>a
    [6] => aaaaaaaa
    [7] => a<br />a
    [8] => aaa
)

ここのドキュメントを見てください

それをループして、各ループにスパンを追加するだけです。

編集

これでは「HTML タグを無視する」という問題は解決しないことに気付きました。あなたはおそらくそれを本当に素早く微調整することができます. REGEXを使用して HTML を解析するという暗い道をたどらないでください。アロハ。

于 2012-09-26T01:31:07.870 に答える
0

PHP関数を間違えましたword_wrap

<?php
$string = 'abcdefghijklmnop{}^??*!-<a href="#">link here</a>abcdefghij<br />abcd';

print_r(word_wrap($string));

// Function Starts Here
function word_wrap($string, $chunk_size = 8) {
    $offset = 0;
    $result = array();
    while(preg_match('#<(\w+)[^>]*>.*?</\1>|<\w+[^>]*/>#', $string, $match, PREG_OFFSET_CAPTURE, $offset)) {
        if($match[0][1] > $offset) {
            $non_html = substr($string, $offset, $match[0][1] - $offset);
            $chunks = str_split($non_html, $chunk_size );
            foreach($chunks as $s) {
                // Wrap text with length 8 in <span>, otherwise leave as it is
                $result[] = (strlen($s) == $chunk_size  ? "<span>" . $s . "</span>" : $s);
            }
        } 
        // Leave HTML tags untouched
        $result[] = $match[0][0];
        $offset = $match[0][1] + strlen($match[0][0]);
    }
    // Process last unmatched string
    if(strlen($string) > $offset) {
        $non_html = substr($string, $offset);
        $chunks = str_split($non_html, $chunk_size );
        foreach($chunks as $s) {
            $result[] = strlen($s) == $chunk_size  ? "<span>" . $s . "</span>" : $s;
        }
    } 
    return $result;
}

の出力を生成します

Array
(
    [0] => <span>abcdefgh</span>
    [1] => <span>ijklmnop</span>
    [2] => <span>{}^??*!-</span>
    [3] => <a href="#">link here</a>
    [4] => <span>abcdefgh</span>
    [5] => ij
    [6] => <br />
    [7] => abcd
)
于 2012-09-26T02:05:23.660 に答える