2012-06-15 2 views
1
$titleadd = substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1); 
$titleadd = str_replace('.php', '', $titleadd); 
$titleadd = str_replace('-', ' ', $titleadd); 

Я получаю URL-адрес, удаляя http://www.domain.com/, затем заменяя .php и любые дефисы в URL-адресе, чтобы отобразить имя страницы.есть ли способ сократить это выражение?

Так www.google.com/my-page.php будет выводиться как моей страница

Есть более короткий способ сделать это?

+2

Действительно ли это работает? Этот код не имеет смысла. – Teekin

+0

str_replace может принимать от и до массивов –

+0

Он отлично работает! Я просто выхожу из $ titleadd в конце. – GT22

ответ

3

Более короткий эквивалент для случая использования является

$titleadd = strtr(basename($_SERVER["SCRIPT_NAME"], ".php"), "-", " "); 

Конечно, это не промышленного класса синтаксический, но он должен дать как хороший результат, как ваш исходный код.

Более надежная попытка включала бы parse_url, но вряд ли она окажется короче, чем у вас там. С другой стороны: возможно, длина кода не является правильной метрикой здесь? В конце концов, вы можете скрыть 200 строк кода за foo(), и никто никогда не узнает.

+0

Это отличная более короткая версия! Спасибо :) Я не хочу спрятать код. Я просто хотел что-то немного короче, чем у меня. Что вы подразумеваете под «промышленным классом»? Можно ли загладить каждое слово, например, изменить ** мой сайт ** на ** Мой сайт ** – GT22

+0

@ GT22: ['ucwords'] (http://php.net/manual/en/function. ucwords.php) будет делать это до тех пор, пока вы будете обрабатывать только латинские буквы. Под «промышленным классом» я подразумеваю, что приведенный выше код может работать некорректно, если вход немного меняется (в зависимости от изменения). – Jon

0
echo str_replace('-', ' ', basename('www.google.com/my-page.php', '.php')); 
Смежные вопросы