Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2014, 19:00   #1
KoBaL
Пользователь
 
Аватар для KoBaL
 
Регистрация: 27.02.2010
Сообщений: 59
По умолчанию Непонятка с str_replace

Нужно заменить коды символов самими символами. Есть такой код:

Код:
echo '%FF POS: '.strpos($mathes[2], '%FF').' in '.$matches[2];
Который выдаёт вот такой результат:

Код:
%FF POS: in E2%E0%F1%FF
str_replace с двумя массивами тоже не работает. Однако, если ввести в str_replace %FF и я просто как строки:

Код:
$matches[2] = str_replace('%FF', 'я', $matches[2]);
То он заменяет.

В чём может быть проблема?
KoBaL вне форума Ответить с цитированием
Старый 20.07.2014, 21:32   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,156
По умолчанию

скорее всего дело в невнимательности автора
...в первом случае у вас функция strpos которая находит позицию, но ничего не заменят.. а во втором случае используете верную функцию str_replace
ADSoft вне форума Ответить с цитированием
Старый 20.07.2014, 21:42   #3
KoBaL
Пользователь
 
Аватар для KoBaL
 
Регистрация: 27.02.2010
Сообщений: 59
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
скорее всего дело в невнимательности автора
...в первом случае у вас функция strpos которая находит позицию, но ничего не заменят.. а во втором случае используете верную функцию str_replace
Со внимательностью у меня всё в порядке. Дело в том, что strpos ничего не возвращает, хотя %FF в строке есть

Проблема в том, что если использовать массив для поиска и массив для замены - то в строке ничего не меняется
KoBaL вне форума Ответить с цитированием
Старый 20.07.2014, 22:25   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,156
По умолчанию

$matches[2] - это строка? нет?
Если нет - с чего вы взяли что strpos работает еще с чем-то кроме строк?
ADSoft вне форума Ответить с цитированием
Старый 20.07.2014, 22:26   #5
KoBaL
Пользователь
 
Аватар для KoBaL
 
Регистрация: 27.02.2010
Сообщений: 59
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
$matches[2] - это строка? нет?
Если нет - с чего вы взяли что strpos работает еще с чем-то кроме строк?
Это результат preg_match (Да, это строка)
KoBaL вне форума Ответить с цитированием
Старый 20.07.2014, 22:30   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от KoBaL Посмотреть сообщение
Со внимательностью у меня всё в порядке.
Ну да, однозначно с этим всё в порядке:
Цитата:
Сообщение от KoBaL Посмотреть сообщение
echo '%FF POS: '.strpos($mathes[2], '%FF').' in '.$matches[2];
Andkorol вне форума Ответить с цитированием
Старый 20.07.2014, 22:36   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,156
По умолчанию

1. делаем для теста
Код:
<?php
$a = "E2%E0%F1%FF";
echo strpos($a, '%FF');
?>
дает 8 результат все верно

отсюда вывод - у вас в $matches[2] не то что вы думаете потому поиск не идет

как вариант сначала преобразуйте принудительно в строку (string)
еще возможно что строки итд у вас в UTF8 тогда нужно юзать mb_strpos
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заставить работать str_replace Тандер PHP 1 04.04.2014 18:55
utf8(кирилица) и функция str_replace Небесный PHP 4 14.07.2013 13:58
str_replace и substr_replace kilogram PHP 8 11.04.2012 10:35
Замена подстрок (str_replace) Linel PHP 2 16.05.2009 18:00
Непонятка с запросом WishNight БД в Delphi 9 03.02.2009 23:30