[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена слова в строке на значение из массива
McLotos
Добрый вечер.
Не могу понять как допилить функцию до рабочего состояния.
есть строка А из файла
есть массив В - ассоциативный массив
нужно прочитать каждую строку и посмотреть есть ли там ключ из массива В
если ключ есть, то заменить его на значение из массива В
если в массиве В такого ключа нет, заменить на пустоту
если в строке ничего нет вернуть её обратно
застрял вот на каком коде:
function myreplace($A,$B)
{
foreach ($B as $key => $value) //перебираю массив
{
if(strstr($A,$key)==TRUE)//если в строке найден ключ из массива
{$result=str_replace($key,$value,$A);}//заменить на значение ключа
}
return $result;
}

по моей логике, должно работать =), но почему-то из функции либо выходит только строка с заменой, либо всё но без замен вообще.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Winston
http://php.net/strtr
McLotos
Цитата (Winston @ 25.12.2013 - 01:22)
http://php.net/strtr

или я не понял как её применять, или тут что-то не так =)
ничего вообще не выводится

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Игорь_Vasinsky
а как сделал?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
McLotos
Спасибо, сработал вариант
str_replace(array_keys($replace), array_values($replace), $subject)

прикольно, всего одна строчка, а я уже пытался свою функцию изобрести =)))))

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
bestxp
SergeySA
только у тебя баг в твоем решении, угадай какой?))))
McLotos
bestxp
не угадаю, =(
потому-что это работает=)

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Игорь_Vasinsky
str_replace с кириллицей в юникоде будет работать не корректно, поэтому тебе и показали strtr()

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
McLotos
Ну это не проблема, в той части кода, вообще нереально что появится кириллица =)

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
bestxp
не только
на каждую пару ключ значение прроизводится замена
то есть если вдруг после замены появится совпадение то еще раз будет замена, и результат может оказаться совершенно не тот
McLotos
bestxp
Спасибо, я постараюсь это учесть, но пока таких проблем не возникало, посмотрим что будет дальше =)

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:

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