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
Форумы портала PHP.SU :: Версия для печати :: Проверка на наличие лишних символов в коце строки
Форумы портала PHP.SU » PHP » Регулярные выражения » Проверка на наличие лишних символов в коце строки

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

1. JustSkeptik - 20 Сентября, 2015 - 21:15:51 - перейти к сообщению
Мне нужно проверить 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$
, где *-любое количество любых символов, а $-конец строки, после которого ничего не должно быть. Кто-нибудь может помочь?
2. broshurkaplus - 21 Сентября, 2015 - 22:43:50 - перейти к сообщению
для получения вхождения (и/или их количества) курите функции работы со строками, это быстрее чем регулярка

strpos для получения вхождения word1 - вы ж сами пишете не false - ок
strstr - для word2 если вернет word2 то ок
3. JustSkeptik - 21 Сентября, 2015 - 23:16:39 - перейти к сообщению
broshurkaplus пишет:
для получения вхождения (и/или их количества) курите функции работы со строками, это быстрее чем регулярка

strpos для получения вхождения word1 - вы ж сами пишете не false - ок
strstr - для word2 если вернет word2 то ок
В случае с word1 вы правы - пока поставил strstr, но попробую заменить на strpos. А в случае с word2 мне нужно обнаружить наличие любого количества любых символов после него, так что решил через preg_match с регуляркой '/word2.+/i'
4. broshurkaplus - 21 Сентября, 2015 - 23:26:16 - перейти к сообщению
прочитайте по 10 раз про каждую.
1 отдает существует ли вхождение - если да то ок
2 возвращает начиная с позиции первого входжения..., а тк ищем word2 и если вернет word2 (word2==word2) - то ясно что слово и есть последнее - после него нет символов, если !== то не ок.
если слово не 100500символов и знаете что word2 именно в конце, а не 5 раз посередине.
или обрежьде на strlrn(word2) символов с конца и сравните
както так.
5. JustSkeptik - 22 Сентября, 2015 - 10:15:02 - перейти к сообщению
broshurkaplus пишет:
2 возвращает начиная с позиции первого входжения..., а тк ищем word2 и если вернет word2 (word2==word2) - то ясно что слово и есть последнее
Но ведь это сработает и в случае http://www.site.ru/*word2$, и в случае, например, http://www.site.ru/*word2?page=5$. Ведь в обоих случаях присутствует вхождение word2. Или я чего-то не понимаю?
(Добавление)
broshurkaplus пишет:
если слово не 100500символов и знаете что word2 именно в конце, а не 5 раз посередине.
В том-то и дело, что мне надо не просто найти это слово, а проверить, что после него в урл не поставили что-то еще.
6. andrewkard - 22 Сентября, 2015 - 11:08:03 - перейти к сообщению
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.  
7. JustSkeptik - 22 Сентября, 2015 - 14:49:25 - перейти к сообщению
andrewkard, вы правы, так действительно лучше.
8. Kate99 - 05 Октября, 2015 - 20:30:18 - перейти к сообщению
согласна с broshurkaplus

 

Powered by ExBB FM 1.0 RC1