Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Извлечение части из строки

Извлечение части из строки


     09.02.2013    Общие вопросы по PHP    1987

вопрос
Здравствуйте уважаемые Pro и !Pro :-)
Возник очередной вопрос и как обычно я пишу сюда так как знаю что найду ответ именно тут.
Объясняю задачу:
Есть
$url = "http://somesite.com/sometag/9999-seo-optimizedtext.html";
Нужно в другую переменную задать ID от $url (т.е. 9999 в данном случае).
Сделал так:

$urlId=preg_replace('/[^0-9]+/iu', '',$url);

Работает ништяк только вот один баг:
Если в $url есть кроме ID еще цифры то в $urlId уже задается неверный ID;
Пример :
если $url = "http://somesite.com/sometag/9999-seo-optimizedtext-1-year-free-from-2013.html" то
$urlID = 999912013; //То есть берутся все цифры с URl.

Пожалуйста помогите с тем чтобы скрипт брал цифры только с первой части URL до "-".
Заранее благодарен!

Ответил: BR0kEN


Вырезать ID из строки таким образом достаточно непросто. Можно было бы обрезать до 4 слеша и все, после "-", но как знать что слешей будет 4?

Если работаете с DLE, то проще, имхо, сделать запрос.

Комментарии пользователей (6)

cybernatic
12

124 | 125

cybernatic - 9 февраля 2013 17:44 - Эксперт

Тут ссылки с сайта DLE.
То есть осталось дело за малым.
Как взять с $url только 4 цифры
{4} как то так было только я не помню. Подскажите пожалуйста =)

cybernatic
12

124 | 125

cybernatic - 9 февраля 2013 17:59 - Эксперт

BR0kEN
Вырезать ID из строки таким образом достаточно непросто. Можно было бы обрезать до 4 слеша и все, после "-", но как знать что слешей будет 4?

Если работаете с DLE, то проще, имхо, сделать запрос.


Задачей является взять только ID новости с переменной $url;

cybernatic
12

124 | 125

cybernatic - 9 февраля 2013 20:29 - Эксперт

Можно закрывать
Решил так:
Свой вариант кода выше + mb_substr

dj-avtosh
39

1479 | 390

dj-avtosh - 10 февраля 2013 01:36 - шашлычник

можно было

$test = end( explode( '/', $url ) );
$id = ! empty ( $test ) ? (int) current( explode( '-', $test ) ) : 0;

skype: elhan.isaev

nowheremany
192

1659 | 1292

nowheremany - 10 февраля 2013 12:10 - Эксперт

preg_match('/([0-9]+)-(.*).html/iu', $url, $result);
if($result and $result[1]!='')
echo $result;

Благодарность принимаю тут Связь

Sander
1125

1636 | 1202

Sander - 10 февраля 2013 16:45 - Эксперт

preg_match('#/([0-9]+)\-#iu',$url,$ids);
echo $ids[1];

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы