Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Извлечение части из строки

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


     09.02.2013    php, regexp, preg_match    Все вопросы » Общие вопросы по PHP    3212

вопрос
Здравствуйте уважаемые 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
Эксперт

cybernatic - 9 февраля 2013 17:44 -

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

cybernatic
Эксперт

cybernatic - 9 февраля 2013 17:59 -

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

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


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

cybernatic
Эксперт

cybernatic - 9 февраля 2013 20:29 -

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

dj-avtosh
PHP-developer

dj-avtosh - 10 февраля 2013 01:36 -

можно было

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

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

nowheremany
Эксперт

nowheremany - 10 февраля 2013 12:10 -

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

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

Sander
PHP-developer

Sander - 10 февраля 2013 16:45 -

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

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

Telegram: @sandev
Skype: Sander8804

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

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

наверх