Wie man input-Feld einen Wert aus einem Formular mit Hilfe von preg_match()
Ich bin kein Experte auf diesem Gebiet also bitte helft mir aus und spare meine Unwissenheit, wenn überhaupt.
Ich bin versucht zu kräuseln durch eine Seite und wollen sich den Wert des versteckten <input>
Feld. Ich bin nicht vertraut mit regexp. mein code ist wie folgt:
$page = curl_exec($ch);
}
curl_close($ch);
function parse_form_fields($page, $username, $password){
preg_match("/<input id=\"signuptoken\" type=\"hidden\" value=\"(.+?)\" name=\"signuptoken\"/", $page, $m);
$captchatoken = $m[1];
$parameters[] = "newaccounttoken=" . urlencode($captchatoken);
}
Formular-Feld ist wie folgt:
<input id="signuptoken" type="hidden" value="03AHJ_Vuv2ts6ev2LltAkZB91vjD6k-BsW3286bTC9QZYZLSHQUMNDQJFUaNmAQMAYb9FDhIkOFzAisafasfsTZuv_pl5KvkYNfsGUPcOAEX5YPlMaMOi7MZJq4ky0v_GyM60SmMgjPrtfZSJYE0hqw--GsfsafasmER0Sksr6OAvnLnBVAMsKcCi7uM" name="signuptoken">
Ich möchte den Wert aus diesem Eingabefeld.
Verwenden Sie einen DOM-parser.
InformationsquelleAutor Deepak Verma | 2012-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist besser dran mit DOMDocument. Zum Beispiel:
froh zu wissen, dass es so ist. Werden Sie sicher, dass akzeptieren einer Antwort, damit andere mit dem gleichen problem wissen, welche Lösung funktioniert.
InformationsquelleAutor Jeune
Sollte diese Arbeit für Sie zu finden Wert:
Parsen von HTML mit regex nicht genau, belastbar, jedoch, wie einfach eine änderung der Reihenfolge der
id
und dietype
im Beispielinput
tag brechen Sie den Schaber. Wenn Sie sicher sind, dass das HTML wird sich nie ändern, das sollte nicht ein Problem sein, aber nur bewusst sein, einen DOM-parser kann jedoch nützlich sein, in einigen Fällen.Sie können tatsächlich verwenden
[file_get_contents](http://php.net/manual/en/function.file-get-contents.php)
zum laden einer URL, wenn Ihre PHP-installation korrekt eingerichtet ist (was es wahrscheinlich auch ist) – ersetzen Sie einfach$input = '...';
im Beispiel mit$input = file_get_contents('[your url]');
und das sollte funktionierenwas die Regulären Ausdrücke für <textarea> ich habe versucht, die oben, aber es ist nicht die Arbeit
InformationsquelleAutor Adam
Nicht verwenden Dinge wie
value=\"(.+?)\"
, können Sie eine Menge von Schwierigkeiten mit Ihnen in einigen bad-formatierte HTML. Verwenden Sie etwas mehr einschränken wievalue=\"([^\">]+?)\"
. Der Unterschied ist, dass.
entspricht viel mehr Personen, als[^">]
, die enden immer auf-tag in der Nähe oder das Angebot schließen.Das problem in Ihrem Fall könnte der Mangel an multi-line-match modifier s, versuchen
preg_match('/<input id="signuptoken" type="hidden" value="(.*?)"/s', $page, $m);
.Andere als das, finde ich, dass, verwenden Sie DOM.
Auch, Seite speichern HTML-Code in die Datei und testen Sie Ihr RegEx auf die lokale Datei anstelle von aufrufen der Seite jeder Zeit.
InformationsquelleAutor Ranty