ドル記号 $ キャッシュタグとハッシュタグ # [closed] を使用します。

StackOverflow https://stackoverflow.com//questions/25048480

  •  21-12-2019
  •  | 
  •  

質問

次のコードでは、ドル記号 $ (キャッシュタグ) とハッシュタグ # の両方を使用したいと考えています。以下のコードは私が使用しようとしたものです...

これが元のコードです:

// Hashtags and @Mentions
        $str = preg_replace_callback('~([#@])([^\s#@]+)~',
        create_function('$m', '$dir = $m[1] == "#" ? "search/?q=%23" : "./";' .
        'return "<a href=\"$dir$m[2]\">$m[0]</a>";' ),
        $str );
        /* Link text */
        $str = self :: linkText( $str );
        /* Emoticons */
        $str = self :: emoticons( $str );
        $str = stripslashes( $str );
        //$str = str_replace( '&lt;br /&gt;', '<br />', $str );

        //return wordwrap( $str, 60, "\r\n", TRUE );
        return $str;
    }

これは私の編集版です:

// Hashtags and @Mentions
        $str = preg_replace_callback('~([#@$])([^\s#@$]+)~',
        create_function('$m', '$dir = $m[1] == "#" ? "search/?q=%23,%24" : "./";' .
        'return "<a href=\"$dir$m[2]\">$m[0]</a>";' ),
        $str );
/* Link text */
        $str = self :: linkText( $str );
/* Emoticons */
        $str = self :: emoticons( $str );
        $str = stripslashes( $str );
        //$str = str_replace( '&lt;br /&gt;', '<br />', $str );

        //return wordwrap( $str, 60, "\r\n", TRUE );
        return $str;
    }

上記のコードに「$」と %24 を追加しました。問題は「オリジナル" コードは適切に動作し、次のような URL を生成します。example.com/search/?q=#myhashtag

ただし、編集したコードでは次のような URL が表示されます。example.com/myhashtag

「#」と「$」の両方を元のコードのように機能させ、次のような 2 つの URL を生成するにはどうすればよいですか。

example.com/search/?q=#myhashtag

example.com/search/?q=$mycashtag

役に立ちましたか?

解決

正規表現内のエスケープされていない $ 記号は、入力文字列の末尾にアンカーされます。リテラルの $ と一致するには、バックスラッシュでエスケープする必要があります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top