То есть у меня идет html, в котором есть элементы пхп (то есть файл в итоге меняющийся, динамический), и в конце html кода есть такой код:
<?php
$cache = ob_get_contents();
ob_end_clean ();
echo $cache;
$find="krechet";
if (strpos ($cache, $find) === TRUE) {
$fp = @fopen ("cache1/$crc", "w");
@fwrite ($fp, $cache);
@fclose ($fp); }
?>
То есть кеш должен писаться ТОЛЬКО если в тексте html страницы есть слово "krechet". Однако не работает. Где я ошибся?
Спустя 22 минуты, 2 секунды (10.04.2011 - 12:34) Mirexzpalich написал(а):
ob_get_contents() возвратит тебе лишь то что выводится непосредственно в коде PHP а не HTML
Спустя 2 минуты, 34 секунды (10.04.2011 - 12:36) mav1 написал(а):
Цитата (Mirexzpalich @ 10.04.2011 - 09:34) |
ob_get_contents() возвратит тебе лишь то что выводится непосредственно в коде PHP а не HTML |
Да, но если поставить вместо === TRUE в коде === FALSE то в кеш пишется весь html код а не исходник...Но не так как надо работает
Спустя 2 минуты, 52 секунды (10.04.2011 - 12:39) Mirexzpalich написал(а):
(strpos ($cache, $find) === TRUE) Здесь у тебя === - а это означает, что сравнивать не только значения, но и ТИПЫ... Тебе нужно такое условие
if(strpos ($cache, $find)) {...}
Спустя 53 секунды (10.04.2011 - 12:40) Mirexzpalich написал(а):
Тем более, что функция ворзвращает не true/false а позицию вхождения/false
Спустя 21 минута, 17 секунд (10.04.2011 - 13:01) mav1 написал(а):
спасибки, вроде ваш варинат прокатил. Плюсик вам в карму разумеется)
Спустя 3 минуты, 27 секунд (10.04.2011 - 13:05) neadekvat написал(а):
Mirexzpalich, вы че хрень несете?
Цитата (Mirexzpalich @ 10.04.2011 - 13:34) |
ob_get_contents() возвратит тебе лишь то что выводится непосредственно в коде PHP а не HTML |
Она возратит ВСЕ, что было выведено в поток между функциями ob_start() и ob_get_contents().
Цитата |
(strpos ($cache, $find) === TRUE) Здесь у тебя === - а это означает, что сравнивать не только значения, но и ТИПЫ... Тебе нужно такое условие <pre class="sh_sourceCode" rel="php"> <span class="sh_control">if</span><span class="sh_symbol">(</span><span class="sh_function">strpos</span> <span class="sh_symbol">(</span><span class="sh_variable">$cache</span><span class="sh_symbol">,</span> <span class="sh_variable">$find</span><span class="sh_symbol">))</span> <span class="sh_cbracket">{</span><span class="sh_symbol">...</span><span class="sh_cbracket">}</span> </pre> |
Фееричная ошибка.
strpos возвращает позицию, а позиция может быть 0, значит, проверять надо именно так:
strpos ($cache, $find) !== false
Ползено иногда было бы перечитывать документацию, пржде чем что-то сказать.
Спустя 13 минут, 31 секунда (10.04.2011 - 13:18) Mirexzpalich написал(а):
neadekvat
Каюсь...
Каюсь...