Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Помогите регуляркой взять строку и сделать ссылку

Сообщения:  [1-10]    [11-20]  [21-23] 

 
 автор: Yuryus   (18.12.2014 в 15:54)   письмо автору
 
   для: confirm   (04.09.2014 в 10:40)
 

Спасибо.

  Ответить  
 
 автор: confirm   (04.09.2014 в 10:40)   письмо автору
 
   для: Yuryus   (03.09.2014 в 20:38)
 

Сравнивайте английский вариант, как в коде:

$f = 'Sport'; //выбираем что выводить

и проверка:

return stripos($s[1], $f) ...

Это выгоднее будет при UTF кодировке сайта.

  Ответить  
 
 автор: Yuryus   (03.09.2014 в 20:38)   письмо автору
 
   для: confirm   (03.09.2014 в 20:36)
 

Спасибо.
Низкий Вам поклон.
Буду пробовать.

По русски тоже сейчас категории выбираются.
Спасибо.

  Ответить  
 
 автор: confirm   (03.09.2014 в 20:36)   письмо автору
 
   для: 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, это быстрее.

  Ответить  
 
 автор: Yuryus   (03.09.2014 в 20:28)   письмо автору
 
   для: confirm   (03.09.2014 в 20:19)
 

PHP Version 5.2.17

  Ответить  
 
 автор: confirm   (03.09.2014 в 20:19)   письмо автору
 
   для: Yuryus   (03.09.2014 в 20:16)
 

Какая у вас версия РНР?

  Ответить  
 
 автор: Yuryus   (03.09.2014 в 20:16)   письмо автору
 
   для: 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) {

Спасибо.

  Ответить  
 
 автор: rurgil   (03.09.2014 в 09:09)   письмо автору
 
   для: confirm   (03.09.2014 в 05:51)
 

Виноват за вторжение.
В теме ниже я описал проблему,тоесть как добавить произвольный сокращенный текст в комментарии к сокращенной ссылке ,посмотрите пожалуйста ,

  Ответить  
 
 автор: confirm   (03.09.2014 в 05:51)   письмо автору
 
   для: 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   (02.09.2014 в 23:48)   письмо автору
 
   для: Yuryus   (02.09.2014 в 23:33)
 

Проверять можно строку на наличие в ней подстроки, и сделать это можно либо stripos(), либо mb_stripos(), если кодировка в UTF8.
По условию должна возвращаться строка сформированная (ссылка и т.п. как в примере), если совпадение найдено, или 0, если нет. А объединению (implode('<br', тут)) должна предшествовать функция вычитающая из возвращаемого массива элементы равные 0 - array_diff().

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-23] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования