Здравствуйте, помогите, пожалуйста. есть массив строк - слов. нужно заменить некоторые буквы в словах на другие, как это реализовать? в учебника смотрел как-то не нашёл или смотрел не там или...
один из способов это вот: Код (Text): $a = array("кот", "Дом", "гром"); $str = str_replace("к", "г", $a); $str = str_replace("м", "и", $a); print_r($str); есть ещё какие либо варианты, здесь мне не нравится то, что Код (Text): $str = str_replace("к", "г", $a); - колличество таких функций может быть очень большим, с ростом букв для замены
Код (Text): $a// массив $new= implode(",", $a); // преобразовали в строку (слова через запятую) $healthy = array("fruits", "vegetables", "fiber"); $yummy = array("pizza", "beer", "ice cream"); $str = str_replace($healthy, $yummy, $new) $a=explode(",", $str); // снова массив echo $a
можно использовать str_replace с параметрами типа массив. См. ссылку http://www.softtime.ru/dic/id_dic=53&id_group=1
Runner, а что я ему по твоему предложил ???..)) Если ты будешь внимательным функция str_ireplace работает исключительно со строкой поэтому массив сначала надо преобразовать в строку с помощью implode. Значения поиска и замены можно задать в виде массива. Но сама фунция str_ireplace применяется к строке !. После преобразований мы делаем из строки снова массив с помощью функции explode.
гы=) Оригинально А пролема-то в том, что один не знает, что заменяемая строка может быть массивом, а второй не знает, что исходные данные могут быть массивом.
Dima4321 честно говоря, я не понял твой пример по следующим причинам 1) речь шла о замене букв, а у тебя пример с массивами слов. Здесь, конечно, я ошибся. 2) поскольку синтаксис функции str_replace позволяет использовать в качестве subject массив, то были непонятны манипуляции с implode explode mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count]) Поэтому я посчитал твой ответ неадекватным и предложил свой вариант
PHP: <?PHP ini_set('display_errors',1); error_reporting(E_ALL); $a=array('dog','cat','map'); $poisk=array('d','a','m'); $zamena=array('s','o','k'); $new=str_ireplace($poisk,$zamena,$a); print_r($new); ?> Apple где ты уловил мою не вежливость ??. Я всегда предельно тактичен. Ну а ..не ошибаются только мертвые виноват.
runner извини не посмотрел что строка может быть массивом. Хотя мой код все равно полезен, хотя бы для изучений функций implode и explode ))
вот до компа добрался)) я примеры ваши посмотрел, большое спасибо за них, вот только проблемка получается когда я беру код: Код (Text): <?PHP ini_set('display_errors',1); error_reporting(E_ALL); $a=array('dog','cat','map'); $poisk=array('d','a','m'); $zamena=array('s','o','k'); $new=str_ireplace($poisk,$zamena,$a); print_r($new); ?> работает хорошо с латиницей, а слова где кириллица там буквы не меняем, в чем может быть проблема?
PHP: <?PHP ini_set('display_errors',1); error_reporting(E_ALL); setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251'); $a=array('dog','cat','map'); $poisk=array('d','a','m'); $zamena=array('s','o','k'); $new=str_ireplace($poisk,$zamena,$a); print_r($new); ?> Выставил тебе локаль. Сейчас заработает с русскими.
ну,это я как пример привёл вообще вот моя модификация того скрипта Код (Text): $path="in.txt";//тут куча слов, они русские $a=file($path); // массив строк, которые можно обработать и $poisk=array('к','а','m'); $zamena=array('г','f','k'); $new=str_ireplace($poisk,$zamena,$a); print_r($new); за любую помощь буду благодарен=)
пользуясь случаем в продолжение, вопрос, а если нет возможность поменять кодировку входных данных, то что тогда делать? например, будет проблемой, если сайт с одной кодировкой, я пишу скрипт с другой, который должен его парсить
вот что получилось, только не понимаю почему не выводит индексы элементов Код (Text): $path="in.txt"; $a=file($path); // массив строк, которые можно обработать и $poisk=array('к','а','m'); $zamena=array('г','f','k'); $new=str_ireplace($poisk,$zamena,$a); for($i = 0; $i < count($new); $i++){ echo key($new). $new[$i]."<br/>"; } ведь key($new) - это же ключ т.е. номер элемента, я пробывал и так $key - всё рано не работает, в чем может быть проблема? я только учусь - всё непонятно
Код (Text): $path="in.txt"; $a=file($path); // массив строк, которые можно обработать и $poisk=array('к','а','m'); $zamena=array('г','f','k'); $new=str_ireplace($poisk,$zamena,$a); foreach($new as $key=>$value) { echo $key. $value.'<br>'; }
Код (Text): $path="in.txt"; $a=file($path); // массив строк, которые можно обработать и $poisk=array('к','а','m'); $zamena=array('г','f','k'); $new=str_ireplace($poisk,$zamena,$a); for($i = 0; $i < count($new); $i++) { echo $i. $new[$i]. "<br>"; }