Php简单代码

Php简单代码,php,simplify,Php,Simplify,如何简化此代码以避免为3个不同的值复制相同的代码!?例如,在当前代码中,我解析了3个URL地址,以确保它们指向正确的目的地,这样人们就不会设置各种疯狂的URL地址。但在未来,我可能会扩展到更多的社交媒体URL,一遍又一遍地重复代码会很乏味。谢谢你的时间 if(isset($_POST['submit'])){ $facebook = strtolower($_POST['facebook']); $twitter = strtolower($_POST['twitter']); $youtub

如何简化此代码以避免为3个不同的值复制相同的代码!?例如,在当前代码中,我解析了3个URL地址,以确保它们指向正确的目的地,这样人们就不会设置各种疯狂的URL地址。但在未来,我可能会扩展到更多的社交媒体URL,一遍又一遍地重复代码会很乏味。谢谢你的时间

if(isset($_POST['submit'])){

$facebook = strtolower($_POST['facebook']);
$twitter = strtolower($_POST['twitter']);
$youtube = strtolower($_POST['youtube']);



$fb_exp = explode("facebook.com", $facebook);
$tw_exp = explode("twitter.com", $twitter);
$yt_exp = explode("youtube.com", $youtube);



if(($fb_exp[0] == 'http://' || $fb_exp[0] == 'http://www.' || $fb_exp[0] == 'https://' || $fb_exp[0] == 'https://www.' || $fb_exp[0] == '') && $facebook != ''){

    $facebook = 'https://www.facebook.com'.$fb_exp[1];

    $fb = 1;

}elseif($facebook == ''){

    $facebook = '';

    $fb = 1;

}else{

    echo 'Not a Valid Facebook Page !';

}



if(($tw_exp[0] == 'http://' || $tw_exp[0] == 'http://www.' || $tw_exp[0] == 'https://' || $tw_exp[0] == 'https://www.' || $tw_exp[0] == '') && $twitter != ''){

    $twitter = 'https://www.twitter.com'.$tw_exp[1];

    $tw = 1;

}elseif($twitter == ''){

    $twitter = '';

    $tw = 1;

}else{

    echo 'Not a Valid Twutter Page !';

}



if(($yt_exp[0] == 'http://' || $yt_exp[0] == 'http://www.' || $yt_exp[0] == 'https://' || $yt_exp[0] == 'https://www.' || $yt_exp[0] == '') && $youtube != ''){

    $youtube = 'https://www.youtube.com'.$yt_exp[1];

    $yt = 1;

}elseif($youtube == ''){

    $youtube = '';

    $yt = 1;

}else{

    echo 'Not a Valid YouTube Page !';

}



if($fb == 1 && $tw == 1 && $yt == 1){

    $text= '<?php $title="'.$_POST['title'].'";
            $subtitle="'.$_POST['subtitle'].'";
            $email="'.$_POST['email'].'";
            $tel="'.$_POST['tel'].'";
            $add="'.$_POST['add'].'";
            $facebook="'.$facebook.'";
            $twitter="'.$twitter.'";
            $youtube="'.$youtube.'";
            ';
    $fp = fopen('text.ini','w');
    fwrite($fp,$text);
    fclose($fp);
    header('Location: http://somesite.com/index.php');

}
if(isset($\u POST['submit'])){
$facebook=strtolower($_POST['facebook']);
$twitter=strtolower($_POST['twitter']);
$youtube=strtolower($_POST['youtube']);
$fb_exp=explode(“facebook.com,$facebook”);
$tw_exp=explode(“twitter.com,$twitter”);
$yt_exp=explode(“youtube.com”,$youtube);
如果($fb_exp[0]='http://'| |$fb_exp[0]='http://www.“| |$fb|U exp[0]=”https://“| |$fb|U exp[0]=”https://www.“| |$fb|u exp[0]=”&&&$facebook!=”){
$facebook=https://www.facebook.com“.$fb_exp[1];
$fb=1;
}elseif($facebook=''){
$facebook='';
$fb=1;
}否则{
echo“不是有效的Facebook页面!”;
}
如果($tw_exp[0]='http://'| |$tw_exp[0]='http://www.“| |$tw|u exp[0]=”https://“| |$tw|u exp[0]=”https://www.“| |$tw|u exp[0]=”&&&&twitter!=”){
$twitter=https://www.twitter.com“.$tw_exp[1];
$tw=1;
}elseif($twitter==''){
$twitter='';
$tw=1;
}否则{
echo“不是有效的Twutter页面!”;
}
如果($yt_exp[0]='http://'| |$yt_exp[0]='http://www.“| |$yt_exp[0]=”https://“| |$yt_exp[0]=”https://www.“| |$yt|U exp[0]==”&&&&$youtube!=”){
$youtube=https://www.youtube.com“.$yt_exp[1];
$yt=1;
}elseif($youtube==''){
$youtube='';
$yt=1;
}否则{
echo“不是有效的YouTube页面!”;
}
如果($fb==1&&$tw==1&&$yt==1){

$text='使用循环,例如
foreach

if(isset($_POST['submit'])){
  $valid = true;
  $links = [];
  $list = ['facebook' => 'facebook.com', 'twitter' => 'twitter.com', 'youtube' => 'youtube.com'];
  foreach($list as $key => $domain) {
    if(isset($_POST[$key])) {
      $exp = explode($domain, strtolower($link));
      if($link != '' && ($exp[0] == 'http://' || $exp[0] == 'http://www.' || $exp[0] == 'https://' || $exp[0] == 'https://www.' || $exp[0] == '')){
          $links[$key] = 'https://www.'.$domain.$exp[1];
      }elseif($link == ''){
          $links[$key] = '';
      }else{
        echo 'Not a Valid '.ucfirst($key).' Page !';
        $valid = false;
      }
    }
  }

  if($valid) {   
    $text = '<?php $title="'.$_POST['title'].'";
            $subtitle="'.$_POST['subtitle'].'";
            $email="'.$_POST['email'].'";
            $tel="'.$_POST['tel'].'";
            $add="'.$_POST['add'].'";
            $facebook="'.$links['facebook'].'";
            $twitter="'.$links['twitter'].'";
            $youtube="'.$links['youtube'].'";
            ';
    $fp = fopen('text.ini','w');
    fwrite($fp,$text);
    fclose($fp);
    header('Location: http://somesite.com/index.php');
  }
}

您可以使用
parse_url
和使用循环处理数组来简化:

$smPass = 0; 
$correctUrls = array('facebook'=>'https://www.facebook.com','twitter'=>'https://www.twitter.com','youtube'=>'https://www.youtube.com');
$output = array('facebook'=>'','twitter'=>'','youtube'=>'');
foreach($_POST as $social=>$value){

    if(in_array( $social, array_keys($correctUrls) )) {

        if(empty($value)){
            $smPass += 1;
        }
        else {

            if($urlParts = parse_url($value)) {

                if( in_array($urlParts['host'], array_keys($correctUrls)) ) {
                    $output[$social] = $correctUrls[$social].$urlParts['path'].'?'.$urlParts['query'];
                    $smPass += 1;
                }
                else {
                    echo 'Invalid '.$social;
                }
            }
            else {
                echo 'Invalid '.$social;
            }
        }

    }

}
if($smPass == 3){

    $text= '<?php $title="'.$_POST['title'].'";
            $subtitle="'.$_POST['subtitle'].'";
            $email="'.$_POST['email'].'";
            $tel="'.$_POST['tel'].'";
            $add="'.$_POST['add'].'";
            $facebook="'.$output['facebook'].'";
            $twitter="'.$output['twitter'].'";
            $youtube="'.$output['youtube'].'";
            ';
    $fp = fopen('text.ini','w');
    fwrite($fp,$text);
    fclose($fp);
    header('Location: http://somesite.com/index.php');

}
$smPass=0;
$correctURL=array('facebook'=>'https://www.facebook.com“,”推特“=>”https://www.twitter.com','youtube'=>'https://www.youtube.com');
$output=array('facebook'=>'','twitter'=>'','youtube'=>'';
foreach($\发布为$social=>$value){
if(在数组中($social,数组密钥($correctUrls))){
if(空($value)){
$smPass+=1;
}
否则{
if($urlParts=parse_url($value)){
if(在数组中($urlParts['host'],数组键($correctUrls))){
$output[$social]=$correctURL[$social].$urlParts['path']..?'.$urlParts['query'];
$smPass+=1;
}
否则{
回声“无效”。$social;
}
}
否则{
回声“无效”。$social;
}
}
}
}
如果($smPass==3){

$text='尝试创建一个函数,然后将url地址作为参数传递。因此,每当需要解析url地址时,只需调用该函数即可。最佳解决方案:)您忘记在$link=$中定义$link\u POST[$key];正常情况会伤害我的眼睛,但也是一个不错的选择:DAlso,strtolower变得过时,因为URL必须与列表中的URL匹配,而youtube的链接是区分大小写的!因此删除它可以解决这两种情况。优雅的选择^_^
$smPass = 0; 
$correctUrls = array('facebook'=>'https://www.facebook.com','twitter'=>'https://www.twitter.com','youtube'=>'https://www.youtube.com');
$output = array('facebook'=>'','twitter'=>'','youtube'=>'');
foreach($_POST as $social=>$value){

    if(in_array( $social, array_keys($correctUrls) )) {

        if(empty($value)){
            $smPass += 1;
        }
        else {

            if($urlParts = parse_url($value)) {

                if( in_array($urlParts['host'], array_keys($correctUrls)) ) {
                    $output[$social] = $correctUrls[$social].$urlParts['path'].'?'.$urlParts['query'];
                    $smPass += 1;
                }
                else {
                    echo 'Invalid '.$social;
                }
            }
            else {
                echo 'Invalid '.$social;
            }
        }

    }

}
if($smPass == 3){

    $text= '<?php $title="'.$_POST['title'].'";
            $subtitle="'.$_POST['subtitle'].'";
            $email="'.$_POST['email'].'";
            $tel="'.$_POST['tel'].'";
            $add="'.$_POST['add'].'";
            $facebook="'.$output['facebook'].'";
            $twitter="'.$output['twitter'].'";
            $youtube="'.$output['youtube'].'";
            ';
    $fp = fopen('text.ini','w');
    fwrite($fp,$text);
    fclose($fp);
    header('Location: http://somesite.com/index.php');

}