1

私は次のような文を変換しています:

Phasellus turpis, elit. Tempor et lobortis? Venenatis: sed enim!

に:

_________ ______, ____. ______ __ ________? _________: ___ ____!

使用:

utf8_encode(preg_replace("/[^.,:;!?¿¡ ]/", "_", utf8_decode($ss->phrase) ))

しかし、私は問題に直面しています。Googleは、これらすべての空の単語をキーワードとしてインデックスに登録しています。元の文字列を、次のようにGoogleからは見えないものに変換したいと思います。

<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span>&nbsp;&nbsp;&nbsp;&nbsp</span>, ....   

使用:

.parent span { text-decoration:underline; }

つまり、単語をスパンタグ内で折り返し、単語の文字を&nbsp;に置き換えます。特殊文字。、:;!?¿¡とスペースはそのままにしておきます。

これは正規表現を使用して解決できますか?文字列のすべての文字をスキャンする非効率的なループを使用して実際にこれを解決しましたが、ページごとに多くの文をスキャンする必要があります。

4

2 に答える 2

1

preg_replace_callback を使用して、コールバックに適切な置換を作成させます。(テストされていない)の線に沿った何か

function replacer($match) {
    return "<span>".str_repeat("&nbsp;",strlen($match[1]))."</span>";
}

// Note the addition of the () and the + near the end of the regex
utf8_encode(preg_replace_callback("/([^.,:;!?¿¡ ]+)/", "replacer", utf8_decode($ss->phrase) ))
于 2012-08-28T03:23:30.913 に答える
0
$yourphrase = preg_replace('/([^\W]+)/si', '<span>$1</span>', $yourphrase);

これにより、すべての「_」単語がスパンでラップされます...

ここでは2段階の手順が必要です。最初に文字をアンダースコアに変換する必要があります(これはすでに明らかに機能していますか?)。次に、「_」-単語をスパンでラップする必要があります(私の正規表現を使用)。

于 2012-08-28T03:04:59.673 に答える