<!-- language: php -->
<?php
// test variables
$l1 = "http://youtube.com/channel/";
$l2 = "http://youtube.com/channel/";
$l3 = "http://youtube.com/channel/";
$l4 = "http://youtube.com/channel/";
$fl = "http://youtube.com/channel/";
//set error false as default
$error = "false";
//check if variables are ready for use, if they are, add them to `$l` array
//I do each check as a seperate line, as it looks cleaner than 1 long if statement.
$l = [];
if(!empty($l1)) $l[] = $l1;
if(!empty($l2)) $l[] = $l2;
if(!empty($l3)) $l[] = $l3;
if(!empty($l4)) $l[] = $l4;
if(!empty($fl)) $l[] = $fl;
foreach($l as $key => $value) {
//1 line ternary is cleaner than if/else statetmnt
$errorKey = $key < 9? "0{$key}" : $key;
//each row by default has no error
$hasError = 0;
//check if this a valid url
if(!preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $value)) {
$error = "true";
$hasError = 1;
}
if($hasError) {
//store error in array, to loop through later
$errors[] = $errorKey;
}
}
$search = '?sub_confirmation=1';
$searchUrl = "youtube.com/channel";
if (strpos($l, $searchUrl) !== false && strpos($l, $search) === false) {
$l = $value."".$search;
}
if($error == "false") {
echo $l1;
echo $l2;
echo $l3;
echo $l4;
echo $fl;
}
// deliver the error message
//Check if $error has been set to true at any point
if($error == "true") {
//loop through error array, echo error message if $errorNumber matches.
//at this point we KNOW there was an error at some point, no need to use a switch really
foreach($errors as $errorNumber) {
echo "Something went wrong here $errorNumber :o";
}
}
?>
こんにちは、私の問題は、strpos関数があるコードの最後です。基本的には、すべてのURLをチェックしたい、一度URLがあるとそうであれば最後に何かを加えてください。しかし、私はif文を4回($ fl変数はチェックする必要はありません)繰り返すことを望まないので、誰かが助けてくれることを願っています。より良い方法があります。私がforeach abothに入れた場合、それは特定の変数には適用されず、値変数にのみ適用されます。すべてのあなたが$value
にも対応する値に行われます行う変更これを行うことにより異なる変数に同じアクションを繰り返す方法
foreach($l as $key => &$value) {
:
コードの 'strpos'一部が同様にforeachループに入る必要があります。もう少し説明してもらえますか?なぜそれがうまくいかないと思うのですか? –
私はそれがチェックされ、各URLのために編集する必要がある場合、私は値を使用して、単一の$ l1、$ l2変数ではなく、これらすべての後に再びこれらの変数で動作するでしょう –