1

単語を切り刻むことなく文字列をいくつかの文字にカットするこの関数があります。ページのmeta_descriptionに使用します。

function meta_description_function($text, $length){ // Meta Description Function
        if(strlen($text) > $length) {
            $text = substr($text, 0, strpos($text, ' ', $length));
        }
        return $text;
    }

私はワードプレスの投稿からコンテンツを引き出します:

$content = $content_post->post_content;

コンテンツからタグを削除します。

$content = strip_tags($content);

そして、私は自分の機能をコンテンツに適用します:

$meta_description = meta_description_function($content, 140);

問題は、$contentが次のような場合です。

<p>Hello I am sentence one inside my own paragraph.</p>

<p>Hello I am sentence two inside my own paragraph.</p>

コンテンツを適用して$meta_descriptionをエコーし​​た後、次のようなさまざまな行の文を取得します。

<meta name="description" content="Hello I am sentence one inside my own paragraph.
**<i get a space here!>**
Hello I am sentence two inside my own paragraph." />

ストリップタグを使用した場合、なぜこの空のスペースが表示されるのですか?それを非表示にするにはどうすればよいですか?

4

4 に答える 4

3

空白を削除し、改行を削除します。次に、タグを取り除きます。すべて一列に!

$content = trim( preg_replace( '/\s+/', ' ', strip_tags($content) ) ); 注: \ sは、改行やスペースだけでなく、タブやフォームフィードなどの場合にも対応します。

デモ

于 2012-05-08T20:29:24.717 に答える
2

HTMLにも改行があるため、改行が発生します。striptagsすべてのタグを削除しますが、改行は削除しません。

それらを削除するには、trim()またはpreg_replace/を使用できますstr_replace\n弦の外側を取り除くだけです。

于 2012-05-08T20:31:34.680 に答える
2

あなたのコードは実際にソースからの改行文字を表示していると思います:

<p>Hello I am sentence one inside my own paragraph.</p>

<p>Hello I am sentence two inside my own paragraph.</p>

2 つの間の空白行は、実際には 2 つの改行、キャリッジ リターン、またはその両方で配置されます。あなたはおそらくそれを取り除くために次のようなことをすることができます:

$text = str_replace("\n", "", $text);
$text = str_replace("\r", "", $text);

それが役立つことを願っています! 注 - 空の文字列の代わりにスペースに置き換えたい場合があります。

于 2012-05-08T20:31:38.093 に答える
1

$content = str_replace( "\n", "", strip_tags($content) );

于 2012-05-08T20:30:07.103 に答える