[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Решите задачку
Andreyua
Допустим имеется такой текст
Слово, <a href="link1.html">Слово2</a>, Слово и еще слово, <a href="link2.html">Другие слова</a>, Текст1, Текст2 текст3 текст4, <a href="link3.html">Ну и хватит</a>


Нужно выбрать все слова или словосочетания, разделенные запятыми + выбрать все анкоры ссылок. Другими словами - просто убрать код HTML ссылок в тексте.

И выгялдеть оно должно как будто, просматривается в браузере (только без ссылок)
Слово, Слово2, Слово и еще слово, Другие слова, Текст1, Текст2 текст3 текст4, Ну и хватит


Пробовал все это дело через preg_match_all и implode, но получилось только достать анкоры. На большее пока не способен ))





Спустя 1 минута, 41 секунда (12.09.2011 - 10:48) sharki написал(а):
 $itog = strip_tags($str);

Спустя 18 минут, 14 секунд (12.09.2011 - 11:07) Andreyua написал(а):
ohmy.gif
Охренеть
biggrin.gif

+ держи плюс

Спустя 13 часов, 24 минуты, 33 секунды (13.09.2011 - 00:31) Andreyua написал(а):
Осмелюсь тогда задать еще один вопрос ....
А как теперь сделать все наоборот, превратить все обычные слова в ссылки ?
напр
<a href="http://domen/page/slovo">Slovo</a>

Спустя 2 часа, 20 минут, 31 секунда (13.09.2011 - 02:52) inpost написал(а):
explode, + обычную вставку:
<a...$text[0]>$text[0]</a>

Спустя 58 минут, 59 секунд (13.09.2011 - 03:51) Andreyua написал(а):
Цитата (inpost @ 12.09.2011 - 23:52)
explode, + обычную вставку:
<a...$text[0]>$text[0]</a>


Спасибо
А на примере не покажете, а то с PHP знаком только пару дней wacko.gif

Спустя 4 минуты, 51 секунда (13.09.2011 - 03:55) inpost написал(а):
Пару дней и уже explode, preg_match? Ты просто зверь. :)
А что именно непонятно? Как делать это:
$text = '<a lala'.$text[0].'>'.$text[0].'</a>';  // ???

Спустя 4 минуты, 12 секунд (13.09.2011 - 04:00) Renden написал(а):
Andreyua
$str = "Слово, Слово2, Слово и еще слово, Другие слова, Текст1, Текст2 текст3 текст4, Ну и хватит";
$text = explode(", ", $str);
echo '<a href="'.$text[0].'">'.$text[0].'</a>';
echo '<a href="'.$text[5].'">'.$text[5].'</a>';

как-то так наверн)

Спустя 7 минут, 25 секунд (13.09.2011 - 04:07) Andreyua написал(а):
Цитата (inpost @ 13.09.2011 - 00:55)
Пару дней и уже explode, preg_match? Ты просто зверь. smile.gif

Ночами не сплю biggrin.gif
Спасибо всем, будем разбираться ...

Спустя 8 минут, 8 секунд (13.09.2011 - 04:15) Renden написал(а):
Andreyua
Если все выводятся по 1 шаблону, а не по разным можешь например for воспользоватся чтоб циклом вывести..
$str = "Слово, Слово2, Слово и еще слово, Другие слова, Текст1, Текст2 текст3 текст4, Ну и хватит";
$text = explode(", ", $str);
for($i=0;$i<count($text);$i++)
echo '<a href="'.$text[$i].'">'.$text[$i].'</a><br>';

Спустя 17 минут, 12 секунд (13.09.2011 - 04:32) Andreyua написал(а):
Ну не вывести, а загнать снова в переменную, разделенную запятыми (не массивную)...
Типа Explode, потом обработка циклом объединяя элементы массива и делая строку.
Emplode (вместо цикла) - лучше и не пытаться, как я понял ?

Спустя 12 минут, 5 секунд (13.09.2011 - 04:44) Renden написал(а):
Andreyua
Несовсем понял тебя, если ты хочешь вывести также как в твоем 1 исходном примере то наверно как-то так:

$str = "Слово, Слово2, Слово и еще слово, Другие слова, Текст1, Текст2 текст3 текст4, Ну и хватит";
$text = explode(", ", $str);
$final = '';
for($i=0;$i<count($text);$i++)
{
if ($i%2 !== 0)
$final .= '<a href="link'.$i.'.htm">'.$text[$i].'</a>,';
else
$final .= $text[$i].',';
}
echo $final;

Может можно проще даже, я так на вскидку)

Спустя 17 минут, 51 секунда (13.09.2011 - 05:02) Andreyua написал(а):
Нет не именно как в исходном примере, а все абсолютно слова превратить в ссылки
И если будет только одно слово, то на выходе (после ссылки, или же ссылок) чтобы не было запятой в конце...
Щас сам пробую, опишусь, как получится smile.gif

Спустя 12 минут, 5 секунд (13.09.2011 - 05:14) Renden написал(а):
Andreyua
Так?
$str = "Слово, Слово2, Слово и еще слово, Другие слова, Текст1, Текст2 текст3 текст4, Ну и хватит";
$text = explode(", ", $str);
$final = '';
for($i=0;$i<count($text);$i++)
{
$zpt = ($i==count($text)-1)?'':',';
$final .= '<a href="link'.$i.'.html">'.$text[$i].'</a>'.$zpt;
}
echo $final;

Спустя 15 минут, 51 секунда (13.09.2011 - 05:30) Andreyua написал(а):
Да так, спасибо за подсказки
Я тоже попытался
<?
$str = "Слово, Слово2, Слово и еще слово, Другие слова, Текст1, Текст2 текст3 текст4, Ну и хватит";
$text = explode(", ", $str);
for($i=0;$i<count($text);$i++)
{
$text[$i] = '<a href="link'.$i.'.htm">'.$text[$i].'</a>';
}
$str = implode(", ", $text);
echo $str;
?>

Правда еще и emplode и использовал, не знаю лучше ли это для оптимизированного кода :)

Спустя 5 часов, 37 минут, 11 секунд (13.09.2011 - 11:07) walerus написал(а):
Чуть короче

<?
$str = "Слово, Слово2, Слово и еще слово, Другие слова, Текст1, Текст2 текст3 текст4, Ну и хватит";
$text = explode(", ", $str);
foreach( $text as $i => $line )
$text[$i] = '<a href="link' .$i. '.htm">' .$line . '</a>';

$str = implode(", ", $text);
echo $str;
?>

Спустя 10 минут, 52 секунды (13.09.2011 - 11:18) Winston написал(а):
Цитата (walerus @ 13.09.2011 - 11:07)
Чуть короче

Еще чуть проще :)
$str = "Слово, Слово2, Слово и еще слово, Другие слова, Текст1, Текст2 текст3 текст4, Ну и хватит";
$text = explode(', ', $str);
$text = implode(', ', array_map(create_function('$item', 'static $i = 0; return "<a href=\'" . ++$i . ".htm\'lll>$item</a>";'), $text));
echo $text;

Спустя 1 минута, 49 секунд (13.09.2011 - 11:20) walerus написал(а):
Winston - всегда были интересны create_function, но так и не вкурил как их юзать ), нужно мануал еще раз покурить )))

Спустя 4 минуты, 10 секунд (13.09.2011 - 11:24) Winston написал(а):
Цитата (walerus @ 13.09.2011 - 11:20)
но так и не вкурил как их юзать

Там особо и вкуривать нечего, они элементарные. И польза от них огромная, иногда намного проще их использовать, чем создавать статическую callback ф-ю smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.