개발! 딱 깔끔하고 센스있게!

PHP 에서 HTML 페이지 (input) 값과 이름 본문

개발 스크랩 메모/PHP

PHP 에서 HTML 페이지 (input) 값과 이름

렉사이 2020. 12. 25. 02:42

예, 제목 그대로 HTML 페이지가 있습니다.

libcurl (PHP 속의 cURL) 을 사용합니다.

이 페이지는 < form > 이름과 값을 추출해야 합니다.

Regex 사용으로 이 점을 이루고 싶습니다.

내가 레지스로 하는 것은 내가 보기에 비교적 간단하기 때문이다.

제가 regex 를 사용해야 한다고 생각한다면, xpath 같은 것을 사용해야 합니다.

나는 네가 내가 하고 싶은 말을 이해할 수 있는지 모르니 얼마든지 묻자.

다음은 PHP 코드 (완전체):

(.*?)%s',$contents,$matches); //echo '
'.htmlentities($contents).'
'; //array_shift($matches); echo '
---------'; foreach($matches as $match) echo '$match:::::: '.htmlentities($match)."\r\n\r\n"; echo '
'; echo '
__________'; preg_match_all('//', $matches[0], $matches2); print_r($matches2); echo '
'; ?>

물론 < pre > 표기와 모든 수출은 디버깅을 위한 것이다.

또 다음은 HTML 페이지의 원본 코드 (중요한 부분):

LOGIN
Para aceder, por favor, faça login.

RECUPERAÇÃO DE PASSWORD
Para recuperar a sua password introduza o seu e-mail. Se pretender recuperar o seu username utilize o link abaixo

Recuperar username

또 원코드의 가독성이 낮아서 죄송합니다.

만약 네가 원한다면, 나는 그것을 더 잘 들여 보아도 된다.

감사합니다.

페델로쿠니아

편집: 여러분의 도움에 감사드립니다.

모든 답은 완벽하고 흠이 없다.

하지만 나는 VolkerK 의 호응을 선택했다.

HTML 페이지이기 때문에 원소는 모자이크가 될 수도 있고, 나는 알고 있다.

(XPath 에 관한 몇 가지 일 중)/ 는 공통 부호다.

대답

If you think I shouldn't use regex, but something like xpath, say how.
That would be something like
loadhtml($contents) ) { echo 'something went wrong'; } else { $xpath = new DOMXpath($doc); foreach($xpath->query('//form[@name="aspnetForm"]//input') as $eInput) { echo 'name=', $eInput->getAttribute('name'), ' value=', $eInput->getAttribute('value'), "\n"; } } 

귀찮은 경고 메시지를 받으면 @doc-> loadhtml ($connts); libxml 과 함께 내부 오류를 사용할 수 있습니다 () libxml

Comments