성능 때문에 C#으로 PHP 스크립트를 구문 분석하고 있습니다. 난 데문자열을 통해 HTML 태그를 반복합니다.
$dom = new DOMDocument;
$dom->loadHTML($message);
foreach ($dom->getElementsByTagName('a') as $node) {
if ($node->hasAttribute('href')) {
$link = $node->getAttribute('href');
if ((strpos($link, 'http://') === 0) || (strpos($link, 'https://') === 0)) {
$add_key = ((strpos($link, '{key}') !== false) || (strpos($link, '%7Bkey%7D') !== false));
$node->setAttribute('href', $url . 'index.php?route=ne/track/click&link=' . urlencode(base64_encode($link)) . '&uid={uid}&language=' . $data['language_code'] . ($add_key ? '&key={key}' : ''));
}
}
}
문제는 getElementByTagName
일부입니다
이
내가에 문제가있어 PHP 소스입니다.here으로 말하면 htmlagilitypack을 사용해야합니까? 내 코드는 지금까지 있습니다 :
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(leMessage);
leMessage
이 HTML을 유지하는 문자열입니다. 여태까지는 그런대로 잘됐다. 문제는 HtmlAgillityPack에 getElementsByTag
함수가 없다는 것입니다. 그리고 정상적인 HtmlDocument (팩없이)에서, 나는 html 페이지의 오른쪽 문자열을 사용할 수 없습니까?
아무도 내가이 일을하기 위해 무엇을해야하는지 안다? 내가 생각할 수있는 것은 윈도우 폼에서 웹 브라우저를 만들고 문서 내용을 leMessage
으로 설정 한 다음 거기에서 파싱하는 것입니다. 하지만 개인적으로 나는 그 해결책을 좋아하지 않는다 ... 그러나 다른 방법이 없다면 ...
와우, 나는 그것을 보지 못했습니다. 정말 미안해. 그러나 어쨌든 시간을내어 말해 주셔서 감사합니다. D – Mathlight