我的数据库中的网址很少,如下所示:
id url
1 http://test.com/embed-990.html
2. http://test2.com/embed-011.html
3. http://test3.com/embed-022.html
如果一个url在数据库中不存在,只是为了加载另一个,我怎么能创建一个简单的PHP代码?我也需要按域检查这些网址。
例如:
if($data['url'] == "test.com") {
echo "my embed code number 1";
} elseif($data['url'] == "test2.com") {
echo "my another embed code";
}
答案 0 :(得分:2)
您可以parse the URL获取主机然后进行比较。
$dataurl = array('http://test.com/embed-990.html',
'http://test2.com/embed-011.html',
'http://test3.com/embed-022.html');
foreach($dataurl as $url) {
switch(parse_url($url, PHP_URL_HOST)) {
case 'test.com':
echo 'test domain';
break;
case 'test2.com':
echo 'test domain 2';
break;
default:
echo 'unknown';
break;
}
echo $url . PHP_EOL;
}
对于问题Something like SQL “LIKE”
,您可以在preg_match
中使用正则表达式。
答案 1 :(得分:0)
您可以使用substr_count
if (substr_count($data['url'], 'test.com') > 0) {
echo "my embed code number 1";
}
else if (substr_count($data['url'], 'test2.com') > 0) {
echo "my embed code number 2";
}
或strpos
if (strpos($data['url'],'test.com') !== false) {
echo "my embed code number 1";
}
else if (strpos($data['url'],'test2.com') !== false) {
echo "my embed code number 2";
}
或preg_match
if(preg_match('/test.com/',$data['url']))
{
echo "my embed code number 1";
}
else if(preg_match('/test2.com/',$data['url']))
{
echo "my embed code number 2";
}
答案 2 :(得分:0)
您可以使用Regx
$domains = ['test.com', 'test1.com', 'test20.com'];
foreach( $domains as $domain ){
if(preg_match('/test([0-9]*)\.com/', $domain, $match)){
echo "my embed code number {$match[1]}\n";
}
}
输出:
my embed code number
my embed code number 1
my embed code number 20
你可以在这里测试一下
http://sandbox.onlinephpfunctions.com/code/1d4ed1d7505a43b5a06b5ef6ef83468b20b47799
对于regx
test
字面上匹配test
([0-9]*)
- 捕获组,匹配0-9
无次或多次\.
字面上匹配.
com
字面上匹配com
需要注意的一点是,将*
置于捕获组([0-9])*
之外将匹配并传递if,但不会捕获捕获组内的任何内容。这是有道理的,但重要的是要注意,因为你会得到这样的信息:
注意:未定义的偏移量: [...] 中的行 6
代表test.com
。
如果您想匹配embed-
中的号码,您可以使用其中一个
'/test\.com\/embed-([0-9]{3})\.html/'
'/\/embed-([0-9]{3})\.html/'
'/\/embed-([0-9]{3})\./'
根据您的具体情况而定。您可以在此页面上使用不同的Regx。
https://regex101.com/r/snuqRc/1
正则表达式非常强大,它们用于模式匹配,这是您需要的。
干杯。