0

このコードでページをクロールします:

<br/>

<td class="PropertyBody">
<b>Category:</b>
 Miscellanea: Soft Skill
<br>
<b>Owner:</b>
<a href="mailto:">blabla</a>
<br>
<b>Location:</b>
 bla bla
<br>
<b>Duration:</b>
 6:00
<br>
<b>Max attendees:</b>
 15
<br>
<b>Start at:</b>
 7/19/2012 10:00:00 AM
<br>
<b>Your status:</b>
<br>
</td>

たとえば'7/19/2012 10:00:00 AM'、このコードから Symfony Crawler を使用して抽出するにはどうすればよいですか? $crawler->filter('.PropertyBody > b')->eq(5)->text();ただ取る'Start at:'

ありがとう、私はそれをやった:

$bigPiece = $crawler->filter('.PropertyBody')->text();
        //getting CATEGORY         
         $pos = strpos($bigPiece, ':')+1;
         $pos2 = strpos($bigPiece, 'Owner:');
         $category = trim(substr($bigPiece, $pos, $pos2-$pos));
         $this->category = $category;
        //getting OWNER
         $pos = strpos($bigPiece, 'Owner:')+6;
         $pos2 = strpos($bigPiece, 'Location:');
         $owner = trim(substr($bigPiece, $pos, $pos2-$pos));
         $training->setOwner($owner);
        //getting LOCATION
         $pos = strpos($bigPiece, 'Location:')+9;
         $pos2 = strpos($bigPiece, 'Duration:');
         $location = trim(substr($bigPiece, $pos, $pos2-$pos));
         $training->setLocation($location);
        //getting DURATION
         $pos = strpos($bigPiece, 'Duration:')+9;
         $pos2 = strpos($bigPiece, 'Max attendees:');
         $duration = trim(substr($bigPiece, $pos, $pos2-$pos));
         $training->setDuration($duration);
        //getting MAXATTENDEES
         $pos = strpos($bigPiece, 'Max attendees:')+14;
         $pos2 = strpos($bigPiece, 'Start at:');
         $maxattendees = trim(substr($bigPiece, $pos, $pos2-$pos));
         $training->setMaxattendies($maxattendees);
        //getting START AT
         $pos = strpos($bigPiece, 'Start at:')+9;
         $pos2 = strpos($bigPiece, 'Your status:');
         $start = trim(substr($bigPiece, $pos, $pos2-$pos));
         $training->setStarts($start);
4

2 に答える 2

1

この特定のケースをテストする必要があり、同封されているタグを追加する機能がない場合は、おそらくassertContains()PHPUnitの使用を検討する必要があります。

$text = $crawler->filter('.PropertyBody > b')->text();
$this->assertContains('7/19/2012 10:00:00 AM', $text);
于 2012-08-07T10:59:51.687 に答える
1

spanタグを追加します。次のようにします。

<b>Start at:</b>
<span class="wantthis">7/19/2012 10:00:00 AM</span>

そして、それを選択します:

$crawler->filter('.wantthis')->text();
于 2012-08-07T10:44:24.693 に答える