Используйте кештег со знаком доллара $, а также хэштег # [закрыто]

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

Как можно использовать функции «#» и «$», как в исходном коде, и создавать два таких URL-адреса:

example.com/search/?q=#myhashtag

example.com/search/?q=$mycashtag

Это было полезно?

Решение

Неэкранированный символ $ в регулярном выражении будет привязан к концу входной строки.Чтобы соответствовать буквальному $, вам нужно экранировать его обратной косой чертой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top