получить параметр из URL, который имеет slace в codeigniter - PullRequest
0 голосов
/ 02 мая 2018

Мой URL-адрес как показано ниже

http://localhost/demo/company/warehouse_subportal/printEway/CN/00003

Мой номер счета-фактуры - CN / 00003, а иногда и CN-00003. я хочу получить счет по URL. Теперь я получаю только CN. Я знаю, что это из-за /. Как я могу получить счет не как CN / 00003? Пожалуйста, помогите мне спасибо заранее.

Ответы [ 4 ]

0 голосов
/ 02 мая 2018

Кодирование и декодирование параметра разрешат вашу проблему.

Exemple:

При подготовке URL:

$invoice_number = urlencode("CN/00003") // Or "CN-00003"

$url = "http://localhost/demo/company/warehouse_subportal/printEway/" . $invoice_number

Чтобы получить номер счета из URL:

$invoice_number = urldecode($this->uri->segment(4));
0 голосов
/ 02 мая 2018

Вы можете использовать urlencode , когда генерируете ссылки или пример URL:

<?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);
?>
0 голосов
/ 02 мая 2018

Вы можете использовать сегменты.

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

0 голосов
/ 02 мая 2018
<?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;

Таким образом, в основном я проверяю последнее поле URL-адреса, чтобы увидеть, содержит ли оно только цифры или также буквы, и на основе ответа выводит правильное значение.

Работает для обоих / и -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...