|
|
|
| Искала искала, так и не нашла ((
Скажите есть текст
слово, слово, слово2, слово2, слово4
|
как эти слова преобразовать в ссылки? | |
|
|
|
|
|
|
|
для: Елена Смирнова
(05.01.2009 в 22:30)
| | preg_replace с модификатором e либо preg_replace_callback
как должны выглядеть ссылки? | |
|
|
|
|
|
|
|
для: Елена Смирнова
(05.01.2009 в 22:30)
| |
<?PHP
$str='слово, слово, слово2, слово2, слово4';
$str=urlencode($str);
?>
|
Теперь этот набор кирилицы можно использовать как URL для возврата в исходный вариант используй $str=urldecode($str);
Хотя я так и не понел что именно нужно ))
Обьясни поподробнее. Для чего это ? Как должна выгледеть ссылка ? И т.д. | |
|
|
|
|
|
|
|
для: Inviseble_Demon
(06.01.2009 в 06:48)
| | - | |
|
|
|
|
|
|
|
для: BinLaden
(06.01.2009 в 15:16)
| | Нужно чтобы было так:
<a href="index.php?tag=слово">слово</a> <a href="index.php?tag=слово2">слово2</a> и т.д.
|
| |
|
|
|
|
|
|
|
для: Елена Смирнова
(07.01.2009 в 01:54)
| |
<?PHP
$array=array('слово', 'слово1', 'слово2', 'слово3', 'слово4', 'слово5', 'слово6');
for ($i=0; $i<count($array); $i++)
{
$str.="<a href=\"index.php?tag=".urlencode($array[$i])."\">$array[$i]</a><br>\r\n";
}
echo "$str";
?>
|
| |
|
|
|
|
|
|
|
для: Inviseble_Demon
(07.01.2009 в 06:35)
| | Эта конструкция не подходит, так как у меня много разных слов в переменной, которые отделяются запятой... | |
|
|
|
|
|
|
|
для: Елена Смирнова
(07.01.2009 в 19:59)
| | так как у меня много разных слов в переменной, которые отделяются запятой...
explode по запятой. | |
|
|
|
|
|
|
|
для: Елена Смирнова
(07.01.2009 в 19:59)
| |
<?php
$s = 'слово, слово, слово2, слово2, слово4';
$s = preg_replace('/(\\w+)(,|\\s|$)/e', '"<a href=\"index.php?tag=" . urlencode("\\1") . "\">\\1</a>\\2"', $s);
echo $s;
?>
|
| |
|
|
|
|
|
|
|
для: BinLaden
(07.01.2009 в 20:36)
| | необходимость htmlspecialchars для текста внутри тега никто не отменял. | |
|
|
|
|
|
|
|
для: Trianon
(07.01.2009 в 20:39)
| | Туда не попадут символы, которые должны быть экранированы. Поэтому необходимо применить htmlspecialchars() до преобразования слов в ссылки. | |
|
|
|
|
|
|
|
для: BinLaden
(07.01.2009 в 20:41)
| | Может быть,конечно, Вы знаете некую дополнительную информацию об их источнике...
Я таковой в исходном посте не обнаружил. | |
|
|
|
|
|
|
|
для: Trianon
(07.01.2009 в 20:56)
| | Туда не попадут символы, которые должны быть экранированы. Поэтому необходимо применить htmlspecialchars() до преобразования слов в ссылки.
Тип символов \w не включает <, >, & | |
|
|
|
|
|
|
|
для: BinLaden
(07.01.2009 в 21:04)
| | Это да, если \w , то верно .
А чего ради только \w ? | |
|
|
|
|
|
|
|
для: Trianon
(07.01.2009 в 21:09)
| | Всё для Вас!
<?php
$s = 'слово, слово, слово2, слово2, слово4';
$s = preg_replace('/([^\\s,]+)(,|\\s|$)/e', '"<a href=\"index.php?tag=" . urlencode("\\1") . "\">" . htmlspecialchars("\\1") . "</a>\\2"', $s);
echo $s;
?>
|
| |
|
|
|
|
|
|
|
для: BinLaden
(07.01.2009 в 21:14)
| | Вот. Это что-то такое, что я имел в виду 05.01.2009 в 23:28 :) | |
|
|
|
|
автор: xx7 (07.01.2009 в 16:21) |
|
|
для: Елена Смирнова
(07.01.2009 в 01:54)
| | Вопрос как-то слишком общими словами.
Если есть только то что есть , то и правда самым оптимальным будет вариант с str_replace()
, если есть например слово22 , которое не нужно выделять , то тогда уже понадобится preg_
например зафиксировать \b - границы слов
<?
header('content-type: text/plain; charset=windows-1251');
$txt = 'слово2x слово, слово,
слово2, слово2, слово4
как эти слова преобразовать';
echo preg_replace('#\bслово[24]?\b#ie',
'"<a href=\"" . urlencode("$0") . "\">$0</a>"',
$txt);
?>
|
, если нужны другие слова, то первым параметром будет массив типа
array(
'#\bраз\b#ie',
'#\bдва\b#ie',
'#\b(?:во)?семь\b#ie',
);
И могут быть другие сложности , такие как сделать ссылкой слово form , но не сделать его если это слово из тега <form> , или слово width ...
А так , наверное, по предпочтительности сначала str_replace(), потом preg_replace_callback() , потом только preg_replace() , если этих замен будет много, | |
|
|
|
|
автор: xx7 (07.01.2009 в 16:23) |
|
|
для: Елена Смирнова
(07.01.2009 в 01:54)
| | и наверное strtolower() придётся пробовать приделать,
если с /i модификатором | |
|
|
|
|
|
|
|
для: Елена Смирнова
(05.01.2009 в 22:30)
| | Мне кажется или вы при придостовлении минимума информации ждете готового решения !?
Люди вам пишут пишут а вы кроме не не так толком ни чего не разьясняете ! | |
|
|
|
|
|
|
|
для: Inviseble_Demon
(08.01.2009 в 04:20)
| | Я изяъснила как могла, слова через запятую перобразовать в ссылки с помощью рег. выр. что тут не понятно? Или не понятно, то что я не говорю каким методом мне это нужно сделать? Если бы я знала, может и не задавала бы вопрос здесь. | |
|
|
|
|
автор: xx7 (08.01.2009 в 22:28) |
|
|
для: Елена Смирнова
(08.01.2009 в 19:49)
| | такой вариант
<pre><?php
$txt = '
слово1, слово2,
слово3,
слово4, слово5
';
$txt = split(',[^ЁА-яё]*', trim($txt));
// print_r($txt);
foreach ($txt AS $txt) {
echo '<a href="/?x='. urlencode($txt) . '">'
. htmlspecialchars($txt) .'</a> ';
}
?>
| но всёравно не понятно зачем такое может быть нужно :) | |
|
|
|
|
|
|
|
для: xx7
(08.01.2009 в 22:28)
| | Замечательно! Работает! Вот только как сделать чтобы он не только русские буквы обрабатывал, но и латиницу и цифры. | |
|
|
|
|
автор: xx7 (09.01.2009 в 00:56) |
|
|
для: Елена Смирнова
(09.01.2009 в 00:01)
| | Извиняюсь за то что по долго не читаю тут.
Можно разделить по запятым с пробельными символами
<pre><?php
$txt = '
слово1, word2,
2word3,
слово4, слово5,
~такое, только$ +тоже
обработается
';
$txt = split(',[[:space:]]*', trim($txt));
print_r($txt);
foreach ($txt AS $txt) {
echo '<a href="/?x='. urlencode($txt) . '">'
. htmlspecialchars($txt) .'</a> ';
}
?>
|
в split() у меня почему-то \s* не совпадало с переносами строк
можно было-бы просще сделать ', *' , если знать что там только пробелы.
насколько понял, это чётко заданная где-то строка, возможно тогда и просто ', ' | |
|
|
|
|
автор: xx7 (09.01.2009 в 01:02) |
|
|
для: xx7
(09.01.2009 в 00:56)
| | \s вообще не работает в POSIX-выражениях :) | |
|
|
|
|
|
|
|
для: xx7
(09.01.2009 в 01:02)
| | Большое спасибо, это то, что надо! | |
|
|
|
|
|
|
|
для: xx7
(09.01.2009 в 01:02)
| | Большое спасибо, это то, что надо! | |
|
|
|