2011-12-27 6 views
2

У меня есть page.html, всего 48 штук. Я не могу заставить это заявление работать.Простой, если инструкция else не работает

<?php 
    $myFile = 'http://site.com/page.html'; 
    $content = file_get_contents($myFile); 
?> 
<?php $num = "48"; ?> 
<?php if ($content == $num): ?> 
    true 
<?php else: ?> 
    false 
<?php endif; ?> 

Если я это сделаю, это сработает.

<?php if ($content == 48): ?> 
    true 
<?php else: ?> 
    false 
<?php endif; ?> 

Как я могу изменить это, чтобы оно работало?

+2

Попробуйте наложить $ num на целое число, $ num = "48" - это строка. –

+1

Вы подтвердили, что '$ content' имеет значение' 48'. COnfirm с помощью 'echo' – xbonez

+1

Есть ли символ новой строки после' 48' в файле? Кроме того, не забывайте, что PHP имеет один из самых тупых операторов любого языка программирования: ['==='] (http://php.net/manual/en/language.operators.comparison.php). –

ответ

1

Думаю, что это должно работать:

<?php 
    $myFile = 'http://site.com/page.html'; 
    $content = file_get_contents($myFile); 
?> 
<?php $num = "48"; ?> 
<?php if (trim($content) == $num): ?> 
    true 
<?php else: ?> 
    false 
<?php endif; ?> 

..с использованием trim(), которая удаляет эти символы:

  • "" (ASCII 32 (0x20)), обычный пробел.
  • "\ t" (ASCII 9 (0x09)), вкладка.
  • «\ n» (ASCII 10 (0x0A)), новая строка (строка).
  • «\ r» (ASCII 13 (0x0D)), возврат каретки.
  • "\ 0" (ASCII 0 (0x00)), NUL-байт.
  • "\ x0B" (ASCII 11 (0x0B)), вертикальная вкладка.
+0

обрезка. Спасибо. – Ciprian

+0

Добро пожаловать! –

2

Скорее всего, значение $content содержит "48\n", то есть число 48 с последующим новой линии (или нечто подобное). Это равно (с нестрогим сравнением) с int 48, но не с строкой "48".

Путь работать вокруг него, чтобы бросить $content к междунар перед выполнением сравнения:

$content = (int) file_get_contents($myFile); 
+0

избили меня, я думаю, что путаница - это сравнение между строкой и целым числом. –

0

Вы оценки строки в первом фрагменте целое число в секунду. Убедитесь, что вы отбрасываете его на целое число, если это тот тип данных, который вам нужен.

$content = (int) file_get_contents($myFile); 
Смежные вопросы