Форумы портала PHP.SU » » Вопросы новичков » Помогите пожалуйста перенести функцию с php 5.3 на 5.6

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

1. mrvilitin - 02 Сентября, 2017 - 19:18:57 - перейти к сообщению
Помогите пожалуйста перенести функцию с php 5.3 на 5.6

Сама функция

http://www.php.su/
function clean_url( $url ) {
if ( $url == '' ) return;
return reset( explode( ':', reset( explode( '/', str_replace( array( 'http://', 'www.' ), array( '', '' ), strtolower( $url ) ) ) ) ) );
}

" target="_blank">
function clean_url( $url ) {
if ( $url == '' ) return;
return reset( explode( ':', reset( explode( '/', str_replace( array( 'http://', 'www.' ), array( '', '' ), strtolower( $url ) ) ) ) ) );
}



файл я прикрепил 134 строка
2. Строитель - 02 Сентября, 2017 - 19:42:01 - перейти к сообщению
mrvilitin, а что эта функция должна возвратить в итоге, доменное имя сайта?
3. andrewkard - 02 Сентября, 2017 - 21:58:27 - перейти к сообщению
Эта функция будет работать в 5.6 и даже в 7 версии
4. mrvilitin - 02 Сентября, 2017 - 22:04:14 - перейти к сообщению
andrewkard пишет:
Эта функция будет работать в 5.6 и даже в 7 версии

не работает
(Добавление)
Строитель пишет:
mrvilitin, а что эта функция должна возвратить в итоге, доменное имя сайта?

да
(Добавление)
Strict Standards: Only variables should be passed by reference in file.game-portal.su/modules/func tions.php on line 134 Strict Standards: Only variables should be passed by reference in file.game-portal.su/modules/func tions.php on line 134
5. Строитель - 02 Сентября, 2017 - 22:15:08 - перейти к сообщению
mrvilitin пишет:
да
Ну тогда посмотрите на результат этого примера, и если он подходит, то замените описание функции clean_url() в вашем файле
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. echo clean_url('http://forum.php.su:8080/topic.php?forum=71&topic=19751&postid=1504369137#1504369137');
  4.  
  5.  
  6. function clean_url($url) {
  7.     $patt = '~https?://([^\s:/]+)~i';
  8.     preg_match($patt, $url , $a);
  9.  
  10.     return empty($a) ? false : $a[1];
  11. }
  12.  
6. mrvilitin - 02 Сентября, 2017 - 22:28:08 - перейти к сообщению
Строитель пишет:
mrvilitin пишет:
да
Ну тогда посмотрите на результат этого примера, и если он подходит, то замените описание функции clean_url() в вашем файле
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. echo clean_url('http://forum.php.su:8080/topic.php?forum=71&topic=19751&postid=1504369137#1504369137');
  4.  
  5.  
  6. function clean_url($url) {
  7.     $patt = '~https?://([^\s:/]+)~i';
  8.     preg_match($patt, $url , $a);
  9.  
  10.     return empty($a) ? false : $a[1];
  11. }
  12.  


Огромное вам спасибо. Хранит вас бог!
7. LIME - 03 Сентября, 2017 - 16:41:40 - перейти к сообщению

скобки надо ставить даже если ф-ция в одну строку
программист чаще читает код чем пишет
8. rgl - 05 Сентября, 2017 - 15:15:51 - перейти к сообщению
А зачем изобретать велосипед? Есть же штатная функция для этого...
PHP:
скопировать код в буфер обмена
  1. echo clean_url('http://forum.php.su:8080/topic.php?forum=71&topic=19751&postid=1504369137#1504369137');
  2.  
  3. function clean_url($url) {
  4.   $t = parse_url($url);
  5.   return isset($t['host']) ? $t['host'] : false;
  6. }

К тому же, урл может иметь вид 'http://user:password@forum.php.su:8080/topic.php...' и штатная функция отработает правильно и в этом случае, а регулярку для этого заметно усложнить пришлось бы...

 

Powered by ExBB FM 1.0 RC1