1

変更できない HTML があるため、使用する必要がありますpreg_replace()

私はこのようなHTMLを取得します -

$form = wp_login_form(array('echo' => false));
$form = preg_replace('/action=".{1,1000}["]/', 'action="'.get_admin_url().'admin-post.php"', $form);

echo $form;

行をコメントアウトするとpreg_replace()、これがあります-

<form id="loginform" method="post" action="http://dev.drinkingday.co.uk/wp-login.php" name="loginform">
    {form stuff here}
</form>    

ただし、その行をそのままにしておくと、これが残ります-

<form id="loginform" action="http://dev.drinkingday.co.uk/wp-admin/admin-post.php" name="loginform">
    {form stuff here}
</form>

属性はどこにmethod消えた?なぜこれが消えたのか誰か教えてください。ありがとう。

4

1 に答える 1

1

このコードで、あなたのすべての夢が叶うと確信しています:

$form = preg_replace('~\baction="\K[^"]+"~',
                     get_admin_url() . 'admin-post.php"', $form);

私のコメントで読むことができるように、属性が消えた場合、それはドットを貪欲な量指定子 (つまり.{1,1000}、最初の改行まで) をキャッチするすべての文字を使用して使用し、バックトラックして文字が続く文字を見つけるためだと思います。二重引用符。したがって、action 属性の後のすべての属性が削除されます。

于 2013-11-14T23:04:13.863 に答える