我有:
action=wuffwuff
form
action=meowmeow
action=mooomooo
如何在“表单”之后提取操作的值?
使用preg_match,我尝试了模式
/form.*?action=(.*)/m
哪种方式不起作用
谢谢
答案 0 :(得分:2)
您不必使用多行修饰符//m
,而是使用//s
,以便您的第一个点匹配包括换行符在内的所有内容(您可以阅读修饰符here的含义)。
此外,您应该将您的论坛限制为非换行的所有内容:
/form.*?action=([^\n]*)/s
答案 1 :(得分:0)
如果您希望在form
之后执行单个操作:
preg_match( '/form.*?action=(.*?)\r?(?:\n|$)/s', $str, $matches );
var_dump( $matches[1] );
结果:
string(8) "meowmeow"
如果您希望在form
之后使用preg_match_all()
获取所有操作,则无法执行此操作,因为这需要像(?<=form.*)
那样的可变长度后视在PHP中是不允许的。但是如果删除“after form”要求(拆分字符串并只保留表单之后的部分),您可以使用此正则表达式来获取所有操作:
preg_match_all( '/action=(.*?)\r?(?:\n|$)/s', $str, $matches );
var_dump( $matches[1] );
结果:
array(3) {
[0]=>
string(8) "wuffwuff"
[1]=>
string(8) "meowmeow"
[2]=>
string(8) "mooomooo"
}