|
|
|
| У меня есть url примерно такого вида 1-title-url. 1 это идентификатор, а title-url это название статьи. Я делаю разбивку с помощью explode, чтобы извлечь 1 и title-url, чтобы потом по эти двум параметрам извлечь данные из базы. Однако у меня встречаются несколько раз знак тире и поэтому title и url являются разными словами и выдает ошибку. Как извлечь только id и title-url раздельно. Т.е до первого тире, еще нужно учитывать, что id может быть и двух и трех значным числом? | |
|
|
|
|
|
|
|
для: 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 />';
|
| |
|
|
|
|
|
|
|
для: coder
(28.02.2016 в 01:04)
| | Спасибо, так тоже работает, а есть ли разница разбивка строки explode и разбивка с помощью регулярного выражения?
P.S.
Вот так будет лучше работать, нижнее подчеркивание тоже надо учитывать, а то текст после него стирается:
preg_match('|(([0-9]+)-([_a-z-]+))|',$id,$d);
|
| |
|
|
|