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]   

> Описание: регулярные выражения или str_replace?
kisil-mike
Отправлено: 20 Октября, 2012 - 15:53:36
Post Id



Новичок


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


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




Ужасно глупый вопрос, но все же прошу дать подсказку.

Проблема:
Имеется строка, например, с названием файла.
Хочется вытащить из строки только те символы, которые соответсвуют шаблону.

Пример:
$_SERVER['PHP_SELF'] возвращает название файла в следующем виде:
'/index.php', а нужно только название 'index'.

2 вопроса:
1. Можно ли это реализоват mc помощью регулярного выражения? Какую функцию использовать?
2. Я это сделал следующим глупым образом:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $link =  str_replace(".php", "", $_SERVER['PHP_SELF']);
  2. echo str_replace("/", "", $link);

Как видите, я 2 раза обработал строку. Как можно это записать в одной строке, обработав строку только 1 раз сразу заменив несколько ненужных символов?

Не обязательно отвечать по теме, буду благодарен за любую наводку/ссылку или совет.

(Отредактировано автором: 20 Октября, 2012 - 15:55:29)



-----
Дарите радость людям!
 
 Top
OrmaJever Модератор
Отправлено: 20 Октября, 2012 - 16:05:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




kisil-mike пишет:
1. Можно ли это реализоват mc помощью регулярного выражения? Какую функцию использовать?

PHP:
скопировать код в буфер обмена
  1. preg_match('#[a-z]+#', '/index.php', $m);
  2. echo $m[0];


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
kisil-mike
Отправлено: 20 Октября, 2012 - 16:17:48
Post Id



Новичок


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


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




OrmaJever пишет:
kisil-mike пишет:
1. Можно ли это реализоват mc помощью регулярного выражения? Какую функцию использовать?

PHP:
скопировать код в буфер обмена
  1. preg_match('#[a-z]+#', '/index.php', $m);
  2. echo $m[0];

Благодарствую! У меня не получилось так сделать - не догадался вытащить результат из массива, а по описанию функции подумал что работает только для массивов.


-----
Дарите радость людям!
 
 Top
kisil-mike
Отправлено: 22 Октября, 2012 - 00:45:30
Post Id



Новичок


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


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




Ответ на мой второй второй вопрос:
использовать массив
PHP:
скопировать код в буфер обмена
  1. $text = array('.php', '/');
  2. echo str_replace($text, "", $_SERVER['PHP_SELF']);


Если нужно именно имя файла
kappa подсказал функцию pathinfo:
PHP:
скопировать код в буфер обмена
  1. $m = pathinfo($_SERVER['SCRIPT_FILENAME']);
  2. echo $m['filename'];

(Отредактировано автором: 22 Октября, 2012 - 00:50:42)



-----
Дарите радость людям!
 
 Top
armancho7777777 Супермодератор
Отправлено: 22 Октября, 2012 - 13:13:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


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




kisil-mike пишет:
PHP:
скопировать код в буфер обмена
  1. $m = pathinfo($_SERVER['SCRIPT_FILENAME']);
  2.  
  3. echo $m['filename'];

Или короче:
PHP:
скопировать код в буфер обмена
  1. $m = pathinfo($_SERVER['SCRIPT_FILENAME'], PATHINFO_FILENAME);
 
 Top
kisil-mike
Отправлено: 23 Октября, 2012 - 19:46:03
Post Id



Новичок


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


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




armancho7777777
Спасибо, действительно коротко!


-----
Дарите радость людям!
 
 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