|
|
|
| Прошу помощи.
Есть плейлист
#EXTM3U
#EXTINF:-1,Трек1
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх1
#EXTINF:-1,Трек2
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх2
Задача удалить первую строку
А из последующих сформировать урлы.
<a href="stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх1">Трек1</a>
<a href="stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх2">Трек2</a>
Спасибо. | |
|
|
|
|
|
|
|
для: Yuryus
(02.09.2014 в 18:49)
| |
<html>
<head>
<title>Online PHP Script Execution</title>
</head>
<body>
<?php
$str='#EXTM3U
#EXTINF:-1,Трек1
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх1
#EXTINF:-1,Трек2
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх2';
$arr=explode("\n",$str);
for($i=0;$i<count($arr);$i++){
$arr[$i]=trim(strip_tags($arr[$i]));
if(strpos($arr[$i],'#')===0){
$arr[$i]=explode(',',$arr[$i]);
$arr[$i]=$arr[$i][1];
}
else{
$arr[$i]='<a href="'.$arr[$i].'">'.$arr[$i-1].'</a>';
echo $arr[$i].'<br>';
}
}
?>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: Deed
(02.09.2014 в 20:24)
| | А где в строке теги, зачем strip_tags? | |
|
|
|
|
|
|
|
для: confirm
(02.09.2014 в 21:09)
| | Да я же не знаю, ЧТО он парсит. А вдруг html with br?
Так, на всякий случай. | |
|
|
|
|
|
|
|
для: Deed
(02.09.2014 в 20:24)
| | Спасибо.
Прекрасно работает. | |
|
|
|
|
|
|
|
для: Yuryus
(02.09.2014 в 18:49)
| |
<?
$s='#EXTM3U
#EXTINF:-1,Трек1
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх1
#EXTINF:-1,Трек2
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх2';
$s = implode('<br>', array_map(function($v) {
$s = explode(',', $v[0]);
return '<a href="'.trim($v[1]).'">'.$s[1].'</a>';
//если версия РНР не ниже 5.4, то одной строкой
//return '<a href="'.trim($v[1]).'">'.explode(',', $v[0])[1].'</a>';
}, array_chunk(array_slice(explode("\n", $s), 1), 2)));
echo $s;
|
| |
|
|
|
|
|
|
|
для: confirm
(02.09.2014 в 21:11)
| | Спасибо. огромное!
Разбираю текстовый файлик в таком виде как показал.
Не мог понять сам принцип построения регулярки.
Сейчас есть от чего отталкиваться.
Спасибо. | |
|
|
|
|
|
|
|
для: Yuryus
(02.09.2014 в 21:38)
| | В данном случае регулярные выражения вообще не применяются, где вы их увидели?
Это работает так:
$s = объединить_возвращаемый_массив_в_строку('объединение_через_<br>', обойти_массив_полученный_из_строки_$s(выполнить_функцию(в_функцию_через_переменную_$v_передаются_вложенные_массивы_массива_полученного_из_$s) {
//если версия РНР не ниже 5.4, то одной строкой
вернуть '<a href="'.удалить_лишнее_из(взять_второй_элемент_вложенного_массива_$v).'">'.разбить_на_массив('разбиение_по_,', первый_элемент_вложенного_массива_$v)[взять_из_массива_второй_элемент].'</a>';
}, разбить_массив_на_части(из_полученного_массива_взять_часть(разбить_строку(по_переносу_"\n", строка_исходного_текста), часть_массива_начинать_со_смещения_1), массив_разбивается_на_массивы_по_2_элемента)));
|
Отталкивайтесь от руководства РНР. | |
|
|
|
|
|
|
|
для: confirm
(02.09.2014 в 22:10)
| | Спасибо.
Открыли глаза.
Очень познавательно т.к. несколько дней искал решения с регулярками. Только с недавнего времени интересуюсь такими программированием и еще успехи не очень.
Возможно поможете в дальнейшей разработке.
Получаю вывод
<a href="stream://ххххххххххххххххххххххххххххххххххх ххххххххххххххххххх1">Hits (Музыка)</a><br>
<a href="stream://ххххххххххххххххххххххххххххххххххх ххххххххххххххххххх2">Sport Klub 1 (Спорт)</a><br>
<a href="stream://ххххххххххххххххххххххххххххххххххх ххххххххххххххххххх3">Sport Klub 2 (Спорт)</a><br>
<a href="stream://ххххххххххххххххххххххххххххххххххх ххххххххххххххххххх4">Sale (Развлекательные)</a><br>
Подскажите пожалуйста. Можно ли как то ограничить вывод по категориям.
Возможно без перезагрузки страницы.
Т.е. список категорий статичный и его можно указать в виде урлов или кнопок.
Спасибо. | |
|
|
|
|
|
|
|
для: Yuryus
(02.09.2014 в 22:27)
| | А что значит ограничить и причем тут перезагрузка страницы, если вы из текста получаете нечто? | |
|
|
|
|
|
|
|
для: confirm
(02.09.2014 в 22:42)
| | Сейчас выводится список из 400 ссылок.
Все данные находятся в массиве, $str= как в первом примере.
Но для удобства нужно было бы фильтровать по разделам
Например в ссылке есть указание категории:
Музыка, Спорт, Развлекательные и т.д.
Возможно ли сделать фильтрацию вывода по категориям на лету.
Например index.php?Спорт
И вывод только ссылок
<a href="stream://ххххххххххххххххххххххххххххххххххх ххххххххххххххххххх2">Sport Klub 1 (Спорт)</a><br>
<a href="stream://ххххххххххххххххххххххххххххххххххх ххххххххххххххххххх3">Sport Klub 2 (Спорт)</a><br>
Например index.php?Музыка
<a href="stream://ххххххххххххххххххххххххххххххххххх ххххххххххххххххххх1">Hits (Музыка)</a><br>
И т.д.
Да вот в php встречал функцию, которая выводит данные без перезагрузки всей страницы, это так к слову. Очень приятно, когда без рефреша выводятся данные.
Спасибо. | |
|
|
|
|
|
|
|
для: Yuryus
(02.09.2014 в 22:50)
| | В РНР нет функций выводящих страницу без перезагрузки - РНР отдает страницу клиенту 1 раз, новый запрос от клиента, значит еще 1 раз, и т.д..
Без перезагрузки, это подразумевается перегрузить не все содержимое страницы, а только некую ее часть, запросив ее у сервера асинхронным запросом. Но к РНР это отношения не имеет, ему без разницы что отдавать, что запросят, то и отдаст, а часть ли это чего-то или все, ему не ведомо, его запросили, он отдал, соединение закрылось.
Асинхронные запросы делает браузер, посредством специального объекта, и называется такой механизм Ajax, и львиная работа в нем, это клиентский скрипт - Javascript.
Что касается фильтровать, сделать можно. | |
|
|
|
|
|
|
|
для: confirm
(02.09.2014 в 23:20)
| | Спасибо большое.
Направьте пожалуйста на путь реализации фильтрации. Постараюсь сам реализовать.
Спасибо. | |
|
|
|
|
|
|
|
для: Yuryus
(02.09.2014 в 23:33)
| | Проверять можно строку на наличие в ней подстроки, и сделать это можно либо stripos(), либо mb_stripos(), если кодировка в UTF8.
По условию должна возвращаться строка сформированная (ссылка и т.п. как в примере), если совпадение найдено, или 0, если нет. А объединению (implode('<br', тут)) должна предшествовать функция вычитающая из возвращаемого массива элементы равные 0 - array_diff(). | |
|
|
|
|
|
|
|
для: Yuryus
(02.09.2014 в 23:33)
| | Что никак не направляется? Вот таким образом:
<?
$s='#EXTM3U
#EXTINF:-1, Hits (Музыка)
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх1
#EXTINF:-1, Sport Klub 1 (Спорт)
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх2
#EXTINF:-1, Sport Klub 2 (Спорт)
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх3
#EXTINF:-1, Sale (Развлекательные)
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх3';
$f = 'спорт'; //выбираем что выводить
$s = implode('<br>', array_diff(array_map(function($v) use($f) {
$s = explode(',', $v[0]);
return mb_stripos($s[1], $f) ? '<a href="'.trim($v[1]).'">'.$s[1].'</a>' : 0;
}, array_chunk(array_slice(explode("\n", $s), 1), 2)), array(0)));
echo $s;
|
А уж если безперезагрузка, и это клиент щелкает по списку выбирая что вывести, так это сделать функцией и Ajax запрос. Ну а чтобы постоянно не лопатить при этом текст, то на момент выдачи страницы клиенту он должен быть уже обработан и результат обработки не строка как показано, а массив, ключами которого будут являться цифровые значения опций списка. Текст опций списка это Спорт, Музыка и т.д.. | |
|
|
|
|
|
|
|
для: confirm
(03.09.2014 в 05:51)
| | Виноват за вторжение.
В теме ниже я описал проблему,тоесть как добавить произвольный сокращенный текст в комментарии к сокращенной ссылке ,посмотрите пожалуйста , | |
|
|
|
|
|
|
|
для: confirm
(03.09.2014 в 05:51)
| | Спасибо.
Но получаю ошибку
Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /var/www/user/data/www/index.php on line 14
В строке
$s = implode('<br>', array_diff(array_map(function($v) use($f) {
Спасибо. | |
|
|
|
|
|
|
|
для: Yuryus
(03.09.2014 в 20:16)
| | Какая у вас версия РНР? | |
|
|
|
|
|
|
|
для: confirm
(03.09.2014 в 20:19)
| | PHP Version 5.2.17 | |
|
|
|
|
|
|
|
для: Yuryus
(03.09.2014 в 20:28)
| | Поэтому и ошибка. Если есть возможность выбрать более новую версию, то установите ее. При версии 5.3 эта ошибка исчезнет, а еще лучше перейти на версию 5.4. В противном случае так:
<?
$s='#EXTM3U
#EXTINF:-1, Hits (Музыка)
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх1
#EXTINF:-1, Sport Klub 1 (Спорт)
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх2
#EXTINF:-1, Sport Klub 2 (Спорт)
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх3
#EXTINF:-1, Sale (Развлекательные)
stream://ххххххххххххххххххххххххххххххххххх хххххххххххххххххх3';
$f = 'Sport'; //выбираем что выводить
function add_link($v) {
global $f;
$s = explode(',', $v[0]);
return stripos($s[1], $f) ? '<a href="'.trim($v[1]).'">'.$s[1].'</a>' : 0;
}
$s = implode('<br>', array_diff(array_map('add_link', array_chunk(array_slice(explode("\n", $s), 1), 2)), array(0)));
echo $s;
|
И выбирать Спорт и т.п., лучше по английскому названию, они же ведь тоже есть, при этом нужно будет сравнивать один байт на символ, а не несколько, даже в случае UTF, это быстрее. | |
|
|
|
|
|
|
|
для: confirm
(03.09.2014 в 20:36)
| | Спасибо.
Низкий Вам поклон.
Буду пробовать.
По русски тоже сейчас категории выбираются.
Спасибо. | |
|
|
|
|
|
|
|
для: Yuryus
(03.09.2014 в 20:38)
| | Сравнивайте английский вариант, как в коде:
$f = 'Sport'; //выбираем что выводить
и проверка:
return stripos($s[1], $f) ...
Это выгоднее будет при UTF кодировке сайта. | |
|
|
|
|
|
|
|
для: confirm
(04.09.2014 в 10:40)
| | Спасибо. | |
|
|
|