我想从网址中获取一些随机代码(以d_
和r_
开头)
示例:
1. domain.com/index/book-one-d_123456
2. domain.com/index/book-one-r_123456
我想显示链接是“d_123456”是否显示“d_123456”的内容,以及“r_123456”是否显示“r_123456”的内容。并在“d_”或“r _”之后爆炸随机码。
我尝试过:
if ($co){
$rand = explode('/',$co);
if (preg_match('/^.*([d_]).*?$/i', $rand[1]))
{
$res = explode("d_",$rand[1]);
some code..........
{
else if (preg_match('/^.*([r_]).*?$/i', $soid[1]))
{
$res = explode("r_",$rand[1]);
some code..........
}
我可以从“d_”获得随机代码,但我无法让它为“r_”工作或似乎没有检测到。
对不起,我很早就发布了,谢谢你的帮助:D 已经找到了这篇文章的解决方案:https://stackoverflow.com/a/4366744/5118751
我只是改变:
if ($co){
$rand = explode('/',$co);
if (preg_match('/d_/', $rand[1]))
{
$res = explode("d_",$rand[1]);
some code..........
{
else if (preg_match('/r_/', $soid[1]))
{
$res = explode("r_",$rand[1]);
some code..........
}
现在正在完善工作...
答案 0 :(得分:1)
我不确定这是否是您正在寻找的 - 正则表达式非常粗糙。
$urls=array(
'domain.com/index/book-one-d_123456',
'domain.com/index/book-one-r_123456'
);
$pttn='@(.*)(d_(\d+))|(.*)(r_(\d+))@i';
foreach( $urls as $url ){
preg_match( $pttn, $url, $matches );
$matches=array_filter( $matches );
if( !empty( $matches ) )print_r( array_values( $matches ) );
}
将输出:
Array
(
[0] => domain.com/index/book-one-d_123456
[1] => domain.com/index/book-one-
[2] => d_123456
[3] => 123456
)
Array
(
[0] => domain.com/index/book-one-r_123456
[1] => domain.com/index/book-one-
[2] => r_123456
[3] => 123456
)
从输出中,您可以决定要进一步处理的项目......
答案 1 :(得分:0)
根据您的示例网址,$rand[1]
将是index
,而不是您正在寻找的分隔符。使用$rand[2]
代替$rand[1]
。
答案 2 :(得分:0)
我个人讨厌正则表达式,所以我相信有更简单的方法可以做你需要做的事情!
<?php
$url='domain.com/index/book-one-r_123456';
$ex=explode('_',$url);
if(substr($ex[0],-1)=='d') { //checking if last letter is d
//do some code, random code is $ex[2];, letter is d
} elseif(substr($ex[0],-1)=='r') { //checking if last letter is r
//do some code, random code is $ex[2]; letter is r
}
?>
祝你好运!