3

ハッシュタグが文字列の末尾以外の場所にある場合にのみ、ハッシュタグから # 文字を削除する必要があります。例:

今月 #ディズニー に行きます!#WDW

今月 #ディズニー に行きます。#WDW #オーランド

今月 #ディズニー #WDW #オーランド に行きます

それらは次のように変換する必要があります:

今月ディズニーに行きます!

今月ディズニーに行きます。

私は今月ディズニーに行きます

このコードはすべての # 文字を削除します:

function remove_hashtags($string){
    $result = preg_replace('/#([\w-]+)/i', '$1', $string);
    return $result;
}

...しかし、その前に、文字列の末尾にあるハッシュタグ (またはハッシュタグのグループ) を削除する必要があります。

4

1 に答える 1

6

これはどう?

function remove_hashtags($string){
    return str_replace('#', '', 
        preg_replace('/(?:#[\w-]+\s*)+$/', '', $string));
}

[\w-]+ここでは、「ハッシュタグ識別子候補」(=パターンに一致)が続く文字だけでなく、すべての「#」文字を削除する必要があると想定しています。

それがあなたの仕事である場合は、それに応じてコードを調整する必要があります。

function remove_hashtags($string){
    return preg_replace('/#(?=[\w-]+)/', '', 
        preg_replace('/(?:#[\w-]+\s*)+$/', '', $string));
}

ここでは、キャプチャグループを先読みに置き換えました。また、/iどちらの場合も修飾子は必要ありません。\w特殊文字は両方a-zA-Z範囲をカバーします。

于 2012-11-19T15:27:32.073 に答える