класс simple_html_dom, что на самом деле возвращает текстовая функция? - PullRequest
0 голосов
/ 03 ноября 2011

Я думаю, что не понимаю. Я попытался разобрать некоторую HTML-страницу:

<select name="sel">
  <option value="val0">-please select me-</option>
  <option value="val1">some selection</option>
</select>

Я использую класс Simple_html_dom:

foreach($html->find('select') as $s) {
    if ($html->find('option',1) != false) {
      $tempoption = $html->find('option',1)->plaintext;
      echo $tempoption; //shows 'some selection'
    }
}

но, если я просто использую эту строку:

$value='';
if ( $tempoption == 'some selection')
   $value='79';
echo $value; //doesn't shows anything (empty variable?)

//or this one :
if ( strcmp($tempoption, 'some selection'))
   $value='79';
echo $value; //Nope.

1 Ответ

0 голосов
/ 04 ноября 2011

Я опробовал код так же, как он был у вас там, и $value У меня получилось 79. Но я думаю, что у вас должно быть больше к вашему HTML, чем крошечный фрагмент.В вашем коде больше всего мне понравился тот факт, что вы заключаете условные выражения в цикл, который проходит через все выборки HTML, но вы не используете отдельные элементы select, полученные из цикла.так что цикл foreach кажется бессмысленным ..

Посмотрите на это:

foreach($html->find('select option') as $o) 
{
  $o_label = $o->plaintext;
  if($o_label=='some selection') echo 'PERFECT MATCH: '.$o_label."\n"; 
  else if(stripos($o_label, 'some selection')!==false) echo 'LOOSE MATCH: '.$o_label."\n"; 
  else echo 'DOES NOT MATCH: '.$o_label."\n";
}

Когда задано HTML:

<select name="sel">
  <option value="val0">-please select me-</option>
  <option value="val1">1 some selection</option>
  <option value="val1">This does not match</option>
  <option value="val1">some selection</option>
  <option value="val1">Another non-matching label</option>
  <option value="val1">some selection 3</option>
  <option value="val1">One more that does not match</option>
  <option value="val1">4 SoME sElEcTIon 4</option>
</select>

Вывод будет:

DOES NOT MATCH: -please select me-
LOOSE MATCH: 1 some selection
DOES NOT MATCH: This does not match
PERFECT MATCH: some selection
DOES NOT MATCH: Another non-matching label
LOOSE MATCH: some selection 3
DOES NOT MATCH: One more that does not match
LOOSE MATCH: 4 SoME sElEcTIon 4
...