Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Возврат позиции strpos неверен. Почему?
 
 автор: baston   (04.02.2010 в 17:23)   письмо автору
 
 

Есть строка со ссылками:
$isxod = '<div class="w1"><a href="http://www.orient-pro.com/">Китай сварочная проволока электроды св08г2с куплю оборудование мир сварочный аппарат из Китая сварка</a>;<br />Вопрос про импотенцию - <a href="http://www.invest-alliance.ru/simplepages_2.html">лечение импотенции</a>';

Мне нужно узнать позицию закрывающего тега
</a>
. Использую функцию strpos таким образом:
$ftag = strpos($isxod, "<a", 0);
$ltag = strpos($isxod, "</a>", $ftag);

Если для первой переменной $ftag позиция возвращается верная, то для второй $ltag абсолютно неверно - заканчивается на второй ссылке где-то...
Почему?
P.S. Предполагаю, что дело в слэше для тега, но не уверен до конца...
Спасибо.

  Ответить  
 
 автор: sim5   (04.02.2010 в 17:35)   письмо автору
 
   для: baston   (04.02.2010 в 17:23)
 

echo strpos($isxod, "</a>"); = 153. Что неверно?

  Ответить  
 
 автор: baston   (04.02.2010 в 17:40)   письмо автору
 
   для: sim5   (04.02.2010 в 17:35)
 

Может мистика... Я использую редактор PHP Expert Editor. Ввожу в чистый файл вот это:
<?php
#    Исходная строка
$isxod '<div class="w1"><a href="http://www.orient-pro.com/">Китай сварочная проволока электроды св08г2с куплю оборудование мир сварочный аппарат из Китая сварка</a>;<br />Вопрос про импотенцию - <a href="http://www.invest-alliance.ru/simplepages_2.html">лечение импотенции</a>';
//echo strpos($isxod, "</a>", $ftag);
echo strpos($isxod"</a>");
?>

И получаю 238!

P.S. Вот сижу и думаю, что же неверно?

  Ответить  
 
 автор: baston   (04.02.2010 в 17:52)   письмо автору
 
   для: sim5   (04.02.2010 в 17:35)
 

Разобрался методом тыка. Обнаружилось, что это из-за кодировки редактора. ОН у меня был настроен на UTF-8. Как перевел на ANSI, так и получил заветную цифру.
Вот же бред!
Спасибо.

  Ответить  
 
 автор: sim5   (04.02.2010 в 18:10)   письмо автору
 
   для: baston   (04.02.2010 в 17:52)
 

Это не бред, а вполне естественно.

  Ответить  
 
 автор: baston   (04.02.2010 в 19:42)   письмо автору
 
   для: sim5   (04.02.2010 в 18:10)
 

Бред мой, а не языка или редактора. Буду решать.
Спасибо за помощь.

  Ответить  
 
 автор: Trianon   (04.02.2010 в 20:21)   письмо автору
 
   для: baston   (04.02.2010 в 19:42)
 

есть strpos и есть mb_strpos
есть разница

  Ответить  
 
 автор: baston   (04.02.2010 в 21:34)   письмо автору
 
   для: Trianon   (04.02.2010 в 20:21)
 

Спасибо. Не знал об этой функции. Учту.

  Ответить  
 
 автор: baston   (04.02.2010 в 22:29)   письмо автору
 
   для: Trianon   (04.02.2010 в 20:21)
 

mb_strpos отсутствует как функция на Денвере (PHP 5.2.4).

  Ответить  
 
 автор: Trianon   (04.02.2010 в 23:01)   письмо автору
 
   для: baston   (04.02.2010 в 22:29)
 

Денвер это на та сущность, где может присутствовать или отсутствовать стандартная функция .

Поставите пакет расширения - будет тарелка с манной кашей.
Не поставите - не будет.

  Ответить  
 
 автор: baston   (04.02.2010 в 23:50)   письмо автору
 
   для: Trianon   (04.02.2010 в 23:01)
 

Расскомментировал в php.ini строчку extension=php_mbstring.dll и заработало.
Спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования