@記号の先頭にユーザー名が含まれているテキストがあります。例:私は例のために、リンクをユーザ名のすべての回出てくる置き換えたいpreg_replaceを使用して一致を取得するにはどうすればよいですか?
One day @john decided to ask @jane out.
は、私がリンクユーザーは、例で@userを交換したいと言うことができます:
One day link-john decided to ask link-jane out.
これは、次のコマンドを使用して行うことができますにpreg_replaceはいないようですので、
preg_replace('`@([a-zA-Z0-9]{2,15})`', 'link-$1', $text);
さらに私がするpreg_matchのようなすべてのマッチの配列を取得したいと思いますが行っているだろうが、私はすることができませんその配列を提供する。これを達成する最も効率的な方法は何ですか?私はpreg_matchをやるのが好きで、後にpreg_replaceがリソースの無駄になると思います。
あなたがこれを達成するより良い方法があると感じたら、私はあなたのフィードバックに感謝します。
ありがとうございます!
いいえ、より良いオプションがありません。 'preg_replace_callback'を使って、コールバックのマッチを置き換えて組み立てることができます。しかし、それは本当に "より良い"ものとは言えません。 - リソースに関しては、* after *プロファイリングを常に最適化してください。 – mario