我的网址如下
http://localhost/demo/company/warehouse_subportal/printEway/CN/00003
我的发票号码是CN / 00003,有时是CN-00003。 我想要的是从URL获取发票。现在我只得到CN。我知道那是因为/。如何获得CN / 00003的发票?请提前帮助我。
答案 0 :(得分:1)
您可以在生成链接或网址示例时使用urlencode:
<?php
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?>
然后使用urldecode解码发票值,例如:
<?php
$query = "my=apples&are=green+and+red";
foreach (explode('&', $query) as $chunk) {
$param = explode("=", $chunk);
if ($param) {
printf("Value for parameter \"%s\" is \"%s\"<br/>\n", urldecode($param[0]), urldecode($param[1]));
}
}
?>
请注意,只需要对发票部分进行编码或解码,即
部分CN / 00003
另一种可能的解决方案是使用base64编码为base64_encode,例如:
<?php
$str = 'This is an encoded string';
echo base64_encode($str);
?>
并使用base64_decode对其进行解码,例如:
<?php
$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
echo base64_decode($str);
?>
答案 1 :(得分:0)
<?php
$data='http://localhost/demo/company/warehouse_subportal/printEway/CN-00003';
$data=explode('/',$data);
if(is_numeric(array_values(array_slice($data, -1))[0])){
$invoice=implode(array_slice($data, -2, 2, true),'/');
}
else{
$invoice=array_values(array_slice($data, -1))[0];
}
echo $invoice;
所以基本上我检查网址的最后一个字段,看看它是否只包含数字或字母,并根据响应我回显正确的值。
适用于/和 -
答案 2 :(得分:0)
您可以使用细分。
if(strpos($this->uri->segment(4), '-') !== FALSE){
$invoice_num = $this->uri->segment(4);
}
else {
$invoice_num = $this->uri->segment(4).'/'.$this->uri->segment(5);
}
https://www.codeigniter.com/user_guide/libraries/uri.html#CI_URI::segment
答案 3 :(得分:0)
编码&amp;解码参数将解决您的问题。
例:
准备网址时:
$invoice_number = urlencode("CN/00003") // Or "CN-00003"
$url = "http://localhost/demo/company/warehouse_subportal/printEway/" . $invoice_number
从网址获取发票号码:
$invoice_number = urldecode($this->uri->segment(4));