Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: PHP операции замены
цитата
20/09/07 в 15:48
 vxod
Подскажите плиз как делать сабж.
Есть строка: слово1, слово слово2, слово3
Нужна строка: <а href=домен/скрипт?id=слово1>слово1</a>, <а href=домен/скрипт?id=слово1>слово слово2</a>, <а href=домен/скрипт?id=слово1>слово3</a>

Так же интересуют преобразования урлов вида http://домен/ в http%3A%2F%2Fдомен%2F и строк "слово1 слово2 слово3" в "слово1+слово2+слово3"
цитата
20/09/07 в 16:12
 Adulter
vxod писал:

Так же интересуют преобразования урлов вида http://домен/ в http%3A%2F%2Fдомен%2F


http://ua.php.net/manual/en/function.rawurlencode.php


vxod писал:

и строк "слово1 слово2 слово3" в "слово1+слово2+слово3"


http://ua.php.net/manual/en/function.urlencode.php
цитата
20/09/07 в 16:21
 Adulter
vxod писал:
Подскажите плиз как делать сабж.
Есть строка: слово1, слово слово2, слово3
Нужна строка: <а href=домен/скрипт?id=слово1>слово1</a>, <а href=домен/скрипт?id=слово1>слово слово2</a>, <а href=домен/скрипт?id=слово1>слово3</a>


Это я бы так сделал. (Но я только учусь)

$strokatvoya = "слово1, слово слово2, слово3";
$array = explode(", ", $strokatvoya); // Получим массив $array[1] = "слово1", $array[2] = "слово слово2" и т.д.

Ну и дальше просто подставить их. Циклом, либо в строку...
цитата
20/09/07 в 17:54
 cyberxxx
Обычный str_replace().
цитата
20/09/07 в 17:57
 Dantist
vxod писал:
Подскажите плиз как делать сабж.
Есть строка: слово1, слово слово2, слово3
Нужна строка: <а href=домен/скрипт?id=слово1>слово1</a>, <а href=домен/скрипт?id=слово1>слово слово2</a>, <а href=домен/скрипт?id=слово1>слово3</a>

Код:
function ConvertString($St)   //$St = "слово1, слово слово2, слово3";
{
$A = explode(", ",$St);
$Res = Array();
foreach ($A as $S)
{
  $Res[] = "<A href=домен/скрипт?id=".$A[0].">".$S."</A>";
}
return join(", ",$Res);
}

echo ConvertString("слово1, слово слово2, слово3");



vxod писал:
Так же интересуют преобразования урлов вида http://домен/ в http%3A%2F%2Fдомен%2F и строк "слово1 слово2 слово3" в "слово1+слово2+слово3"

Код:
$St = urlencode($St);



В общем, должно работать )))
цитата
20/09/07 в 22:52
 Formator
Всё намного проще icon_smile.gif

Код:

echo preg_replace("/((.*?)([,]|$))/","<a href=домен/скрипт?id=$2>$2</a>$3","word1, word2, word3, word4");


А вот то что тебе нужно по всей видимости:

Код:

echo preg_replace("/((.*?)([,]|$))/e","'<a href=домен/скрипт?id='.urlencode('\\2').'>\\2</a>\\3'","long word1, long word2, long word3, long word4");
цитата
23/09/07 в 22:23
 vxod
[quote="CJLOG"]Всё намного проще icon_smile.gif

Код:

echo preg_replace("/((.*?)([,]|$))/","<a href=домен/скрипт?id=$2>$2</a>$3","word1, word2, word3, word4");


выдает текст

<a href=домен/скрипт?id=world1>world1, </a><a href=домен/скрипт?id=>world2, </a> и т.д.
т.е. ид в ссылке прописывает только для первого слова, остальные слова получают ссылки без ид.
цитата
24/09/07 в 00:16
 Formator
Ага, чё-то не заметил. Вот, держи оба варианта подправленные:

Код:

echo preg_replace("/(([^ ].*?)([,]|$))/","<a href=домен/скрипт?id=$2>$2</a>$3","word1, word2, word3, word4");

echo "<p></p>";

echo preg_replace("/(([^ ].*?)([,]|$))/e","'<a href=домен/скрипт?id='.urlencode('\\2').'>\\2</a>\\3'","long word1, long word2, long word3, long word4");
цитата
24/09/07 в 00:36
 vxod
CJLOG писал:
Ага, чё-то не заметил. Вот, держи оба варианта подправленные:

Код:

echo preg_replace("/(([^ ].*?)([,]|$))/","<a href=домен/скрипт?id=$2>$2</a>$3","word1, word2, word3, word4");

echo "<p></p>";

echo preg_replace("/(([^ ].*?)([,]|$))/e","'<a href=домен/скрипт?id='.urlencode('\\2').'>\\2</a>\\3'","long word1, long word2, long word3, long word4");


спасибо, заработало =) добавил только \" , чтоб фразы из двух слов тоже преобразовывались в ссылку

меня интересовал только первый вариант. про преобразование урла спрашивал для других целей.


а как можно изъебнуться, чтобы менял фразы на ссылки с фразами, начиная с n-ой фразы, а не все подряд?
цитата
24/09/07 в 01:49
 Formator
vxod писал:
спасибо, заработало =) добавил только \" , чтоб фразы из двух слов тоже преобразовывались в ссылку

меня интересовал только первый вариант. про преобразование урла спрашивал для других целей.


а как можно изъебнуться, чтобы менял фразы на ссылки с фразами, начиная с n-ой фразы, а не все подряд?


Т.е. в выражении "word1, word2, word3" надо поменять только word2 и word3, если начинать со второй? Если так, то:

Код:

echo join(", ",array_slice($s=explode(",","word1, word2, word3, word4"),0,-count($s)+СКОЛЬКО_СЛОВ_ВЫРЕЗАТЬ_С_НАЧАЛА)).preg_replace("/(([^ ].*?)([,]|$))/","<a href=домен/скрипт?id=$2>$2</a>$3",join(", ",array_slice($s,0,СКОЛЬКО_СЛОВ_ВЫРЕЗАТЬ_С_НАЧАЛА)));


icon_smile.gif


Эта страница в полной версии