Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка на наличие лишних символов в коце строки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
JustSkeptik
Отправлено: 20 Сентября, 2015 - 21:15:51
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Сент. 2015  


Помог: 0 раз(а)




Мне нужно проверить request_uri на предмет одновременного соблюдения в нем двух условий:
1) наличия у него внутри слова word1
2) что request_uri заканчивается словом word2.
Как я понимаю, что для этого следует использовать
CODE (htmlphp):
скопировать код в буфер обмена
  1. strstr(strtolower($_SERVER['REQUEST_URI']), "регулярное выражение")

Но мне нужно составить соответствующее регулярное выражение. То есть чтобы находились все отличия от
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.my-site/*word1*word2$
, где *-любое количество любых символов, а $-конец строки, после которого ничего не должно быть. Кто-нибудь может помочь?
 
 Top
broshurkaplus
Отправлено: 21 Сентября, 2015 - 22:43:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


Помог: 2 раз(а)




для получения вхождения (и/или их количества) курите функции работы со строками, это быстрее чем регулярка

strpos для получения вхождения word1 - вы ж сами пишете не false - ок
strstr - для word2 если вернет word2 то ок
 
 Top
JustSkeptik
Отправлено: 21 Сентября, 2015 - 23:16:39
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Сент. 2015  


Помог: 0 раз(а)




broshurkaplus пишет:
для получения вхождения (и/или их количества) курите функции работы со строками, это быстрее чем регулярка

strpos для получения вхождения word1 - вы ж сами пишете не false - ок
strstr - для word2 если вернет word2 то ок
В случае с word1 вы правы - пока поставил strstr, но попробую заменить на strpos. А в случае с word2 мне нужно обнаружить наличие любого количества любых символов после него, так что решил через preg_match с регуляркой '/word2.+/i'

(Отредактировано автором: 21 Сентября, 2015 - 23:18:04)

 
 Top
broshurkaplus
Отправлено: 21 Сентября, 2015 - 23:26:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


Помог: 2 раз(а)




прочитайте по 10 раз про каждую.
1 отдает существует ли вхождение - если да то ок
2 возвращает начиная с позиции первого входжения..., а тк ищем word2 и если вернет word2 (word2==word2) - то ясно что слово и есть последнее - после него нет символов, если !== то не ок.
если слово не 100500символов и знаете что word2 именно в конце, а не 5 раз посередине.
или обрежьде на strlrn(word2) символов с конца и сравните
както так.
 
 Top
JustSkeptik
Отправлено: 22 Сентября, 2015 - 10:15:02
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Сент. 2015  


Помог: 0 раз(а)




broshurkaplus пишет:
2 возвращает начиная с позиции первого входжения..., а тк ищем word2 и если вернет word2 (word2==word2) - то ясно что слово и есть последнее
Но ведь это сработает и в случае http://www.site.ru/*word2$, и в случае, например, http://www.site.ru/*word2?page=5$. Ведь в обоих случаях присутствует вхождение word2. Или я чего-то не понимаю?
(Добавление)
broshurkaplus пишет:
если слово не 100500символов и знаете что word2 именно в конце, а не 5 раз посередине.
В том-то и дело, что мне надо не просто найти это слово, а проверить, что после него в урл не поставили что-то еще.
 
 Top
andrewkard
Отправлено: 22 Сентября, 2015 - 11:08:03
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




JustSkeptik пишет:
В том-то и дело, что мне надо не просто найти это слово, а проверить, что после него в урл не поставили что-то еще.

Обрезайте url:
PHP:
скопировать код в буфер обмена
  1.  
  2. $str = "http://www.site.ru/*word2?page=5$";
  3. if (strpos($str, 'word2') !== false){
  4.     $str = substr($str,0, strpos($str, 'word2')+5);
  5. }
  6. echo $str;
  7.  
 
 Top
JustSkeptik
Отправлено: 22 Сентября, 2015 - 14:49:25
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Сент. 2015  


Помог: 0 раз(а)




andrewkard, вы правы, так действительно лучше.
 
 Top
Kate99
Отправлено: 05 Октября, 2015 - 20:30:18
Post Id



Забанен


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




согласна с broshurkaplus
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB