我有一些我无法更改的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
属性去了哪里?任何人都可以告诉我为什么这已经消失了?感谢。
答案 0 :(得分:1)
我确信通过这段代码,您的所有梦想都会成真:
$form = preg_replace('~\baction="\K[^"]+"~',
get_admin_url() . 'admin-post.php"', $form);
正如你可以在我的评论中看到的那样,我认为如果属性消失,那是因为你使用带有贪婪量词的点(即.{1,1000}
)来捕获所有可能的字符(直到第一个换行符) )然后回溯找到一个字符后面跟一个双引号。因此,将删除action属性之后的所有属性。