Как сравнить значение перед разделением? - PullRequest
0 голосов
/ 20 марта 2012

У меня проблема с моей программой, поскольку они извлекают целые HTML-теги, когда я пытаюсь сравнить два тега "и Включено"> ". Я хочу, чтобы моя программа находила теги в Источник php с именем mystrings1, чтобы проверить, существуют ли они, найдет теги mystrings2 со значением «enabled» в той же строке, что и mystrings1 для каждого совпадения, а затем извлечет значение mystrings1.

В моей программе она читает целые теги так:

[PHP]
<p id='mystrings1'>user data 1</p><p id="images">
<a href="images.php?id=1">Images</a>      </td> | <a href="http://mylink.com">Link</a> </td> | <a href="delete.php?id=1">Delete</a>   </td> | <span id="mystrings2">Enabled</td>
[/PHP]

Вот код формы:

 #include "StdAfx.h"
 #include "Form1.h"

 using namespace MyProject;

 System::Void Form1::timer1_Tick(System::Object^  sender, System::EventArgs^  e)
 {
     timer1->Enabled = false;
     timer1->Stop();

     try
     {
         String ^URL1 = "http://mysite.com/myscript.php?user=test&pass=test";
         HttpWebRequest ^request1 = safe_cast<HttpWebRequest^>(WebRequest::Create(URL1));
         HttpWebResponse ^response1 = safe_cast<HttpWebResponse^>(request1->GetResponse());
         StreamReader ^reader1 = gcnew StreamReader(response1->GetResponseStream());
         String ^str1 = reader1->ReadToEnd();
         String ^pattern1 = "(<p id='mystrings1'>(.*?)</p>(.*?)<span id=\"mystrings2\">Enabled</td>)";
         MatchCollection ^matches1 = Regex::Matches(str1, pattern1);
         Match ^m1 = Regex::Match(str1, pattern1);

         for each (Match ^x1 in matches1)
         {
             array<String^> ^StrArr1 = x1->Value->ToString()->Split();
             MessageBox::Show(x1->Value->ToString());
         }
     }
     catch (Exception ^ex)
     {
     }
 }

Может, кто-нибудь подскажет, как я могу сравнить теги между mystrings1 и mystrings2 со значением "enabled", чтобы увидеть, нашел ли он совпадения, а затем отобразить окно сообщения со значением mystrings1?

Любой совет будет высоко ценится.

1 Ответ

1 голос
/ 13 июня 2012

этот код может вам помочь

// set str1 to a constant string for testing
String^ str1 = "<p id='mystrings1'>user data 1</p><p id=\"images\"> <a href=\"images.php?id=1\">Images</a></td> | <a href=\"http://myhotlink.com\">Link</a> </td> | <a href=\"delete.php?id=1\">Delete</a> </td> | <span id=\"mystrings2\">Enabled</td>";
// the pattern is the key part to figure out
String ^pattern1 = "<p\\sid='mystrings1'>(?<mystrings1value>[^<>]+)</p>.*<span\\sid=\\\"mystrings2\\\">Enabled";
Regex^ r = gcnew Regex (pattern1, RegexOptions::IgnoreCase);

Match ^m1 = r->Match(str1);
if (m1->Success)
{
    MessageBox::Show (m1->Groups["mystrings1value"]->Value);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...