Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: str_word_count и замена значений

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Viper
Отправлено: 13 Октября, 2008 - 19:56:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Такая задача. Есть строка из БД вида - фантастика, фэнтези, сказка
(все значения в 1-ой переменной). нужно произвести замену.
результирующая строка должна выглядеть как:

CODE (text):
скопировать код в буфер обмена
  1. <a href="1.htm">фантастика</a>, <a href="1.htm">фэнтези</a>, <a href="1.htm">сказка</a>


проблема в том что в переменной таких записей может быть и одна, а может и 2 и 3 и 4.
к тому же ссылки тоже могут меняться. т.е. может быть и <a href="1.htm">фантастика</a> а может быть и <a href="2.htm">фантастика</a>

пока что код наваял так:
CODE (text):
скопировать код в буфер обмена
  1. function genreReplace() {
  2.         global $genre;
  3.  
  4.         $param = str_word_count($genre, 1);
  5.         $str_r = array('<a href="1.htm">1</a>', '<a href="2.htm">2</a>', '<a href="3.htm">3</a>');
  6.         $result = str_replace($param, $str_r, $param);
  7.         print_r($result);
  8. }


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
IOpeH
Отправлено: 13 Октября, 2008 - 21:41:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




а как ты определяешь когда 1.htm а когда 2.htm?

если подряд то 1.htm, 2.htm, 3.htm ... , тогда все просто
PHP:
скопировать код в буфер обмена
  1.  
  2. $str='фантастика, фэнтези, сказка';
  3. $arr=explode(', ',$str);
  4. $len=count($arr);
  5. for($i=0,$i2=1;$i<$len;$i++,$i2++){
  6.         echo'<a href="',$i2,'.htm">',$arr[$i],'</a>',$i2==$len?'':', ';
  7. }
  8.  
 
 Top
valenok Модератор
Отправлено: 13 Октября, 2008 - 23:53:05
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




$i=0,$i2=1; ;$i++,$i2++

Хорошо = ))) Хорошо Хорошо


-----
Truly yours, Sasha.
 
My status
 Top
Viper
Отправлено: 14 Октября, 2008 - 00:00:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




IOpeH пишет:
а как ты определяешь когда 1.htm а когда 2.htm?

если подряд то 1.htm, 2.htm, 3.htm ... , тогда все просто


ссылки генерятся автоматически и примерно вида index.php?option=com_&Itemid=28&task=genres&genre_id=$id

в принципе все переменные я могу получить из БД. остается вопрос по замене. да и ещё интересует такой момент. стоит ли использовать explode ? может такое быть что разделитель не ", " а | или . или вообще слэш. тогда ведь одним не обойдешся...


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
IOpeH
Отправлено: 14 Октября, 2008 - 01:19:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




valenok пишет:
$i=0,$i2=1; ;$i++,$i2++

Хорошо = ))) Хорошо Хорошо

это что такое было ? Ха-ха
(Добавление)
Viper, дак 1.htm это образно чтоль ?

Определись тогда сам с разделителями, какие будешь использовать... если есть уже база, переправ поля под один вид, и будет тебе счастье как говорится )))
 
 Top
valenok Модератор
Отправлено: 14 Октября, 2008 - 10:47:19
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




две переменных то зачем создавать ? =))


-----
Truly yours, Sasha.
 
My status
 Top
IOpeH
Отправлено: 14 Октября, 2008 - 12:18:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




а вдруг у Viper окажется в массиве несколько тысяч элементов, побыстрей работать должно
(сам не проверял, но в теории...)
 
 Top
Viper
Отправлено: 14 Октября, 2008 - 17:46:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




1.htm... это для примера Улыбка

IOpeH пишет:
Определись тогда сам с разделителями, какие будешь использовать... если есть уже база, переправ поля под один вид, и будет тебе счастье как говорится )))


если бы было все так просто Недовольство, огорчение дело в том что я незнаю, да и не могу знать какие разделители могут использовать юзеры, поэтому стараюсь сообразить на все случаи.

IOpeH пишет:
а вдруг у Viper окажется в массиве несколько тысяч элементов, побыстрей работать должно

не Улыбка не так много Улыбка около десятка будет максимум.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
valenok Модератор
Отправлено: 14 Октября, 2008 - 18:23:58
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Какая-то странная теория.
Тоесть увеличивать 1000 раз две переменных будет быстрее чем одну ?


-----
Truly yours, Sasha.
 
My status
 Top
IOpeH
Отправлено: 14 Октября, 2008 - 21:24:16
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




valenok, нет, но если не было бы i2, пришлось бы высчитывать два раза значение равное i2, т.е.
PHP:
скопировать код в буфер обмена
  1. echo'<a href="',$i+1,'.htm">',$arr[$i],'</a>',$i+1==$len?'':', ';

зы просто тогда мне так захотелось написать, сегодня я может сделал бы и с одним $i (даже не учитывая обсуждений $i и $i2)

(Отредактировано автором: 14 Октября, 2008 - 21:25:37)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB