0

文字列には多くの HTML 要素があり、そのうちの 1 つは解析する必要がある入力です。

<input name="generate" value="52FadA=" type="hidden">

正規表現を作成しましたが、機能しません。エスケープ文字の可能性がありますが、明確ではありません:(

preg_match_all('/input[\s](?:(?:name\="generate"[\s]value\="(.*)")|(?:value\="(.*)"[\s]name\="generate"))[\s]/i',$html,$matches,PREG_SET_ORDER);

なにが問題ですか ?

また、たとえば属性のランダムな順序の場合など、より普遍的なものにするための助けに非常に感謝します.

ありがとう、オレグ。

4

1 に答える 1

2

html を正規表現で解析しないでください。DOMDocument::loadHTML($string)DOM または XPath メソッドを使用してから、データのクエリを実行します。DOMDocument::loadHTML()ドキュメントのフラグメントを適切に解析します。

あなたの例では、次のようになります。

$str = '<input name="generate" value="52FadA=" type="hidden">';
$doc = new DOMDocument();
$doc->loadHTML($str);

$value = $doc->getElementsByNodeName('input')->item(0)->getAttribute('value');
于 2013-09-28T10:11:59.647 に答える