如何跳过正则表达式中的内容?

时间:2019-05-22 13:30:29

标签: php regex curl

我想查看所有字段输入和文本区域,但是我不知道如何 一起显示在同一代码中。 如果我想跳过一些东西,例如,我想写 直接输入姓名而无需让他检查类型,或者我不希望他向我显示只读信息,怎么办?

  <form method="post" action="" id="submit_form">

  <input type="text" name="TITLE" value="" size="40" maxlength="100" class="text" />

  <textarea name="DESCRIPTION" rows="4" cols="36" class="textarea"></textarea>

  <input type="text" name="DESCRIPTION_limit" size="4" class="limit_field" readonly="readonly" value="250" />

  <textarea name="ARTICLE" id="ARTICLE" rows="6" cols="50" class="textarea"></textarea>

  <input type="text" name="META_KEYWORDS" value="" size="40" maxlength="2000" class="text" /> 
preg_match_all('/<(input)[\s](type)="?([^>"]*)"?[\s](name)="?([^>"]*)"?[\s]/', file_get_contents($url), $matches);
echo"<pre>";
print_r($matches);

1 个答案:

答案 0 :(得分:1)

我用“ $ string”行测试了此代码。输入标签中的类型和名称属性可以按任何顺序排列,并且会搜索直到读取“>”字符为止。

    $string = '<input type="text" name="TITLE" value="" size="40" maxlength="100" class="text" />';
    preg_match_all('/<input[^>]*?(?:(type)="([^"]*)")|(?:(name)="([^"]*)")/', $string, $matches);
    if($matches[1][0] == "type" && $matches[3][1] == "name"){
    $type = $matches[2][0];
    $name = $matches[4][1];
    }
    elseif($matches[1][0] == "name" && $matches[3][1] == "type"){
    $name = $matches[2][0];
    $type = $matches[4][1];
    }
    else{
        throw new Exception('no input tags with type and name attributes were found!');
    }
    echo $type;
    echo $name;