这个目标对于正则表达式来说足够简单了。对于你的情况:
$text = preg_replace('#<input\b[^>]*\s(type="submit")[^>]*>#i',
'<a href="#" onclick=".....', $text);
尝试以下模式来捕获您所描述的所有输入标签。它将删除标签的附加属性,我认为这就是您所要求的。
/<input type="submit"[^/]+\/>/
我自己没有对此进行测试,但它应该会让您朝着正确的方向前进。 [^/]+ 是关键;它捕获所有不是“/”的字符,直到尾随“/>”。