如何从url替换http://在一个或多个url foreach循环的情况下


How to replace http:// from url in case of one or more url foreach Loop

我想删除http://和https://形式的所有url在我的表单提交。所以我使用下面的代码来删除http://并进行下一个处理。如果我使用的东西与http://在输入它不工作,去我的错误页面。

现在我想直接删除所有提交url的http://或https://。我也在这里读到str_replacepreg_replace,但不明白如何在这里应用它。

$web = mysqli_real_escape_string($dbh, $_POST['web']);
$fb = mysqli_real_escape_string($dbh, $_POST['fb']);
$tw = mysqli_real_escape_string($dbh, $_POST['tw']);
$gg = mysqli_real_escape_string($dbh, $_POST['gg']);

$keys = array('web','fb','tw','gg');
$invalid_strings = array("http://","https://");

   foreach($keys as $key) {    # iterate through each key to check
      foreach($invalid_strings as $invalid) {   # iterate through each invalid string
         if(strpos($_POST[$key], $invalid) === 0) {
     return str_replace($invalid, '', $_POST[$key]);
         }
      }
   }
   // Update process query

返回(无效的美元,大小写不敏感,$ _POST [$ key]);

您需要将return替换为$errors[] =

return语句将结束当前循环并使数组为空。执行$array[] =将把新值附加到数组的末尾

use parse_url:

$url_part = parse_url($url);
$new_url = $url_part['host'] . $url_part['path'] . $url_part['query'] . $url_part['fragment'];

如果直接运行此页,取消前3行注释

<?php
//$_POST['ra']='http://small-seo-tools.in';
//$_POST['rah']='http://rahul.com';
//$_POST['rau']='https://rahulr.com';
print_r($_POST);
    foreach($_POST as $key=>$value){
        $_POST[$key] = str_replace('https://','',$_POST[$key]);
        $_POST[$key] = str_replace('http://','',$_POST[$key]);
    }
echo"<br><br>";
print_r($_POST);
?>