Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] PHP, определение слова в строке (http://forum.oszone.net/showthread.php?t=235623)

foma24 30-05-2012 12:29 1924915

PHP, определение слова в строке
 
Подскажите пожалуйста, есть файл в котором внутри написано в 2 строки:

<?xml version="1.0" encoding="windows-1251"?>
<PacketEPD xmlns="urn:cbr-ru:ed:v2.0"

И есть написанная на php функция, которая определяет нахождение в этом файле наличие слова PacketEPD

private function isPacket($filename)
{
try
{
$f=fopen($filename,"r");
fgets($f);
$STR=trim(fgets($f));
if (substr($STR,0,10)=="<PacketEPD")
{
return true;
}
else
{
return false;
};
fclose($f);
}
}

Если в том же файле написано все в одну строку, т.е.

<?xml version="1.0" encoding="windows-1251"?><PacketEPD xmlns="urn:cbr-u:ed:v2.0"

функция не работает, подскажите, как можно данную функцию поправить для случая с одной строкой ?

Tonny_Bennet 30-05-2012 14:19 1924965

Намёк первый

Код:

string substr ( string string, int start [, int length] ) 

substr() возвращает подстроку строки string длиной length, начинающегося с start символа по счету.


Намёк второй

Код:

int strpos ( string haystack, string needle [, int offset] )

Возвращает позицию первого вхождения подстроки needle в строку haystack. В отличие от strrpos(), использует всю строку needle, а не только первый символ.

Если подстрока needle не найдена, strpos() возвращает FALSE.


foma24 30-05-2012 14:46 1924983

Т.е. если исходить из намека 1, для 1 строки должно быть:

if (substr($STR,45,55)=="<PacketEPD") или if (substr($STR,45,10)=="<PacketEPD") ?

Tonny_Bennet 30-05-2012 15:35 1925017

Цитата:

Цитата foma24
Т.е. если исходить из намека 1, для 1 строки должно быть:
if (substr($STR,45,55)=="<PacketEPD") или if (substr($STR,45,10)=="<PacketEPD") ? »

Второй вариант в принципе верен. но в нём нет универсальности. Т.е. он сможет найти в данном примере нужное слово, но если встретится лишняя позиция или недостающая позиция то работать код перестанет.

Если вы воспользуетесь "вторым намёком" будет всё проще. Аргументами этой функции являются две строки: первая где вы ищите, вторая что вы ищите. И результатом становится номер символа первого вхождения найденной строки или False, если строка не найдена.


Время: 07:45.

Время: 07:45.
© OSzone.net 2001-