web-dev-qa-db-ja.com

preg_replaceとcomment_form_defaults

これは最初のうちはちょっとした冗談でしたが、現在はフックcomment_form_defaultsで正規表現を使用することが可能かどうか疑問に思います。これが私が探しているものです:

function remove_default_allowed_tags( $defaults) {
    $defaults = preg_replace('/<p class="form-allowed-tags">(.*?)<\/p>/','', $defaults);
    return $defaults;
}
add_filter('comment_form_defaults', 'remove_default_allowed_tags', 2);

私はそれがこのような何かで簡単にされることができるということを知っています:$defaults['comment_notes_after'] = ''; return $defaults;

しかし、私はこの文脈で私の正規表現を使うことができるかどうかを知りたいだけで、そうでなければ、なぜでしょう。あなたの答えてくれてありがとう。

1
JMau

操作する文字列があるところならどこでも正規表現を使うことができます。それが基本的なPHPです。それを変えるWordPressについて特別な何もない。

しかし、他の選択肢があるのになぜ正規表現を使うのでしょうか。それがそうであるのと同じくらい楽しい、regexはトリッキーで簡単に間違えることができ、そしてそれを使うことにかなりのオーバーヘッドがあります。

ところで、あなたがしていることは、「配列から文字列への変換」Noticeを生成します。 preg_replace は3番目のパラメータとして文字列の配列を受け入れますが、$defaults['fields']は配列なのでNoticeが返されるので、試しても期待通りに動作しません。その分野を変えるため。

2
s_ha_dum