как я могу пропустить что-то в регулярных выражениях? - PullRequest
0 голосов
/ 22 мая 2019

Я хочу увидеть все поля ввода и текстовое поле, но я не знаю, как показать это вместе в одном и том же коде. и в случае, если я хочу что-то пропустить, например, я хочу написать введите имя напрямую, не заставляя его проверять тип, или я не хочу, чтобы он показывал мне только чтение, так как я могу это сделать?

  <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 Ответ

1 голос
/ 22 мая 2019

Я тестировал этот код с помощью строки "$ 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...