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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Разбивка строки
 
 автор: algoritm2   (27.02.2016 в 23:41)   письмо автору
 
 

У меня есть url примерно такого вида 1-title-url. 1 это идентификатор, а title-url это название статьи. Я делаю разбивку с помощью explode, чтобы извлечь 1 и title-url, чтобы потом по эти двум параметрам извлечь данные из базы. Однако у меня встречаются несколько раз знак тире и поэтому title и url являются разными словами и выдает ошибку. Как извлечь только id и title-url раздельно. Т.е до первого тире, еще нужно учитывать, что id может быть и двух и трех значным числом?

  Ответить  
 
 автор: algoritm2   (27.02.2016 в 23:52)   письмо автору
 
   для: algoritm2   (27.02.2016 в 23:41)
 

Кажется нашел вариант прочитав мануал на одном из сайтов вот так вроде работает.


$id = '14312-title-url';


$id = explode('-', $id, 2);
echo "id=".$id[0]."<br>";
echo "title-url=".$id[1];

  Ответить  
 
 автор: coder   (28.02.2016 в 01:02)
 
   для: algoritm2   (27.02.2016 в 23:52)
 

пробуйте еще такrn
rn$id = '14312-title-url';rnpreg_match('|(([0-9]+)-([a-z-]+))|',$id,$d);rn     //где 14312 rn    echo $d[2].'<br />';rn    rn    //это title-urlrn    echo $d[3].'<br />';rn

  Ответить  
 
 автор: coder   (28.02.2016 в 01:04)
 
   для: algoritm2   (27.02.2016 в 23:52)
 

пробуйте еще так

$id = '14312-title-url';
preg_match('|(([0-9]+)-([a-z-]+))|',$id,$d);
     //где 14312 
echo $d[2].'<br />';
    
    //это title-url
echo $d[3].'<br />';

  Ответить  
 
 автор: algoritm2   (28.02.2016 в 10:05)   письмо автору
 
   для: coder   (28.02.2016 в 01:04)
 

Спасибо, так тоже работает, а есть ли разница разбивка строки explode и разбивка с помощью регулярного выражения?

P.S.
Вот так будет лучше работать, нижнее подчеркивание тоже надо учитывать, а то текст после него стирается:


preg_match('|(([0-9]+)-([_a-z-]+))|',$id,$d);

  Ответить  
Rambler's Top100
вверх

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