Показать ошибку, когда URL не разрешен в списке?

если $ text не допускается, ошибка печати списка. Не знаю, как это сделать

$allowedDomains = array('www.test1.com', 'www.test2.co.uk', 'test3.com');
$text = 'this is my url www.abcd.com/index.php?page=home';

0

Решение

попробуй вот так

$allowedDomains = array('www.test1.com', 'www.test2.co.uk', 'test3.com');

if ( !in_array('your-domain-name', $allowedDomains) {
echo 'show your error here';
} else {
echo  'do what ever you want here';
}
0

Другие решения

Вот еще один способ сделать это: создать регулярное выражение, используя список доменов, а затем использовать его для проверки текстовых строк.

$allowedDomains = array('www.test1.com', 'www.test2.co.uk', 'test3.com');
# concatenate the allowed domains with | and surround with brackets so the regex will
# match any of the array items
# i.e. $regex is (www.test1.com|www.test2.co.uk|test3.com)
$regex = "(" . implode("|", $allowedDomains) . ")";

# a couple of test strings
$texts = array('this is my url www.abcd.com/index.php?page=home',
'my home page is www.test3.com');

foreach ($texts as $t) {
if (preg_match("/$regex/", $t)) {
echo "Found a match! $t\n";
}
else {
echo "No match found: $t\n";
}
}

Выход:

No match found: this is my url www.abcd.com/index.php?page=home

Found a match! my home page is www.test3.com

0

Я написал для вас функцию, которая позволит вам добавлять / удалять доменные имена и / или доменные расширения по своему усмотрению, учитывая, что не все вводят «http (s)» и / или «www» в свой домен поиски, а также непредсказуемость того, какая информация может находиться за доменом или нет:

<?php

function testDomain($domain){

//Set domain names
$arrDomainNames = array("test1","test2","test3");

//Set domain extensions like .com .co .info
//Do NOT add .co.uk! .uk is taken care of in the regex
$arrDomainExt = array("com","co");

$cntDomainNames = count($arrDomainNames);
$cntDomainExt = count($arrDomainExt);
$i = 0;
$y = 0;

$DomNames = "";
$DomExt = "";

foreach($arrDomainNames as $value){
if($i == $cntDomainNames - 1){
$DomNames .= $value;
} else {
$DomNames .= $value ."|";
}
$i++;
}

unset($value);

foreach($arrDomainExt as $value){
if($y == $cntDomainExt - 1){
$DomExt .= $value;
} else {
$DomExt .= $value ."|";
}
$y++;
}

unset($value);

$pattern = "/((((http|ftp|https)+(:)+(\/{2})))?+(www\.)?(((". $DomNames .")+\.)+(". $DomExt .")+(\.uk)?(:[0-9]+)?((\/([~0-9a-zA-Z\#\+\%@\.\/_-]+))?(\?[0-9a-zA-Z\+\%@\/&\[\];=_-]+)?)?))\b/imu";
if(preg_match($pattern, $domain)){
echo "Domain match!<br />";
} else {
echo "Domain not match!<br />";
}
}

testDomain("www.test1.com"); //match
testDomain("test1.com"); //match
testDomain("http://www.test1.co.uk"); //match
testDomain("test1.com/info.php?who=you"); //match
testDomain("www.google.com"); //no match

?>
0

Как заставить это работать с

$arrDomainNames = array("test1.com","test2.org","test3.co.uk","test3.net");

без

$arrDomainExt = array("com","co");
0
По вопросам рекламы [email protected]