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
Форумы портала PHP.SU :: Версия для печати :: str_word_count и замена значений
Форумы портала PHP.SU » PHP » Программирование на PHP » str_word_count и замена значений

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

1. Viper - 13 Октября, 2008 - 19:56:28 - перейти к сообщению
Такая задача. Есть строка из БД вида - фантастика, фэнтези, сказка
(все значения в 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. }
2. IOpeH - 13 Октября, 2008 - 21:41:59 - перейти к сообщению
а как ты определяешь когда 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.  
3. valenok - 13 Октября, 2008 - 23:53:05 - перейти к сообщению
$i=0,$i2=1; ;$i++,$i2++

Хорошо = ))) Хорошо Хорошо
4. Viper - 14 Октября, 2008 - 00:00:25 - перейти к сообщению
IOpeH пишет:
а как ты определяешь когда 1.htm а когда 2.htm?

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


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

в принципе все переменные я могу получить из БД. остается вопрос по замене. да и ещё интересует такой момент. стоит ли использовать explode ? может такое быть что разделитель не ", " а | или . или вообще слэш. тогда ведь одним не обойдешся...
5. IOpeH - 14 Октября, 2008 - 01:19:13 - перейти к сообщению
valenok пишет:
$i=0,$i2=1; ;$i++,$i2++

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

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

Определись тогда сам с разделителями, какие будешь использовать... если есть уже база, переправ поля под один вид, и будет тебе счастье как говорится )))
6. valenok - 14 Октября, 2008 - 10:47:19 - перейти к сообщению
две переменных то зачем создавать ? =))
7. IOpeH - 14 Октября, 2008 - 12:18:07 - перейти к сообщению
а вдруг у Viper окажется в массиве несколько тысяч элементов, побыстрей работать должно
(сам не проверял, но в теории...)
8. Viper - 14 Октября, 2008 - 17:46:05 - перейти к сообщению
1.htm... это для примера Улыбка

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


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

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

не Улыбка не так много Улыбка около десятка будет максимум.
9. valenok - 14 Октября, 2008 - 18:23:58 - перейти к сообщению
Какая-то странная теория.
Тоесть увеличивать 1000 раз две переменных будет быстрее чем одну ?
10. IOpeH - 14 Октября, 2008 - 21:24:16 - перейти к сообщению
valenok, нет, но если не было бы i2, пришлось бы высчитывать два раза значение равное i2, т.е.
PHP:
скопировать код в буфер обмена
  1. echo'<a href="',$i+1,'.htm">',$arr[$i],'</a>',$i+1==$len?'':', ';

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

 

Powered by ExBB FM 1.0 RC1