[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Условие проверки существования строки в тексте
kav1
Всем привет, в одной из тем я спрашивал про проблему проверки размера файла, но в итоге отказался от этой идеи. Теперь решил делать проверку наличия в файле строки, и только если такая строка есть - писать кеш этого файла.

То есть у меня идет 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
Каюсь...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.