Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 23

Удаление пробелов и конкретных символов

24.11.2020, 11:50. Показов 1955. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
    $pri = $_POST['pri'];
    $ord = $_POST['ord'];
    $name = $_POST["name"];
    $email = $_POST["email"];
    $phone = $_POST["phone"];
    $delivery = $_POST["delivery"];
    $address = $_POST["address"];
    $message = $_POST["message"];
    $cus = $_POST["cus"];
    $mai = $_POST["mai"];
    $pho = $_POST["pho"];
    $spo = $_POST["spo"];
    $adr = $_POST["adr"];
    $msg = $_POST["msg"];
    $ito = $_POST["ito"];
    $tov = $_POST["tov"];
    $nas = $_POST["nas"];
    $file = fopen('orders.txt', 'a+'); //Open your .txt file
    $content = $cus . $name . PHP_EOL . $mai . $email . PHP_EOL . $pho . $phone . PHP_EOL . $spo . $delivery . PHP_EOL . $adr . $address . PHP_EOL . $msg . $message . PHP_EOL . $ito . PHP_EOL . $tov . PHP_EOL . $ord . PHP_EOL . $nas . PHP_EOL . $pri . PHP_EOL;
    fwrite($file , $content . PHP_EOL); //Now lets write it in there
    fclose($file ); //Finally close our .txt
    die(header("Location: ".$_SERVER["HTTP_REFERER"]));
?>
Имеется вот такой код, и вот именно $ord интересует. Пробовал trime и str_replace() ничего хорошего не вышло, либо пробел убирался только у первой строчки. Выглядит этот ужас вот так:

На первом скрине как сейчас.
На втором скрине какого результата хочется добиться. Тоесть удалить все возможные проблемы и табуляции, и удалить конкретные символы, а именно "+" и "-".

Если вдруг нужен html, то вот:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
<!--
 
powered by nevermiss
 
-->
 
 
 
<!doctype html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="SaluteMSK">
    <meta name="author" content="SaluteMSK">
    <meta property="og:image:secure_url" content="https://salutemsk.ru/assets/images/services-bg.jpg">
    <meta property="og:image:type" content="image/jpg" />
    <meta property="og:image:width" content="400" />
    <meta property="og:image:height" content="300" />
    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
    <title>SALUTE MSK</title>
    <link href='https://fonts.googleapis.com/css?family=Ubuntu:400,700&subset=latin,cyrillic-ext' rel='stylesheet' type='text/css'>
    <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css">
    <link href="css/main.css" rel="stylesheet" type="text/css">
    <link rel="stylesheet" type="text/css" href="themes/theme1.css" />
    <link rel="stylesheet" type="text/css" href="wicart.css" />
    <script src="http://code.jquery.com/jquery-1.11.0.min.js" type="text/javascript" ></script>
    <script src="wicart.js"  type="text/javascript" ></script>
    <style>
    .v {border:1px solid #999; border-radius: 5px;padding: 10px;margin-bottom: 10px; width: 340px;}
    </style>    
<script>
function submitForm() {
  if (
    confirm(
      "Данные заполнены верно, пожалуйста нажмите на кнопку 'ОК', чтобы ваш заказ был оформлен!"
    )
  ) {
    alert(" Ваш заказ успешно оформлен! Ожидайте, и мы скоро вам позвоним! :) ");
  } else {
    alert(" Вы отказались от оформления заказа :( ");
    return false;
  }
}
 
</script>   
 
</head>
<body data-page="order">
 
 
    <div class="container">
        <h1>Оформление заказа. Интернет-магазин Salute MSK</h1>
        <br />
        <ul class="nav nav-pills">
            <li><a href="https://salutemsk.ru/index.html">Главная</a></li>
              <li class="nav-item">
                <a class="nav-link" href="#" id="basketwidjet" onclick="cart.showWinow('bcontainer', 1)"></a>
              </li>
            <li class="active"><a href="order.html">Оформление заказа</a></li>
        </ul>
        <br />
        <br />
        <div id="order-message" class="alert alert-info">Обязательно к заполнению.</div>
        <br />
        <form action="scriptorder.php" method="post" id="order-form" class="form-horizontal" role="form" onsubmit="return submitForm(this);">
                <input type="hidden" name="cus" value="Имя клиента: "/>
                <input type="hidden" name="mai" value="Почта клиента: "/>
                <input type="hidden" name="pho" value="Телефон клиента: "/>
                <input type="hidden" name="spo" value="Способ доставки(on/off): "/>
                <input type="hidden" name="adr" value="Адрес клиента: "/>           
                <input type="hidden" name="msg" value="Сообщение клиента: "/>
                <input type="hidden" name="ito" value="Заказ клиента: "/>
                <input type="hidden" name = "tov" id ="tov" value = "Товары: " /> 
                <input type="hidden" name = "ord" id ="ord" value = "" />   
                <input type="hidden" name = "nas" id ="nas" value = "На сумму: " />  
                <input type="hidden" name = "pri" id ="pri" value = "" />               
            
            <div class="form-group">
                <label for="input-name" class="col-sm-2 control-label">Ваши полные инициалы *</label>
                <div class="col-sm-6">
                    <input type="text" class="form-control" id="input-name" name="name" required placeholder="Как мы можем к вам обращаться?">
                </div>
            </div>
            <div class="form-group">
                <label for="input-email" class="col-sm-2 control-label">Email *</label>
                <div class="col-sm-6">
                    <input type="email" class="form-control" id="input-email" name="email" required placeholder="Ваш адресс электронной почты">
                </div>
            </div>
            <div class="form-group">
                <label for="input-phone" class="col-sm-2 control-label">Телефон *</label>
                <div class="col-sm-6">
                <input id="" name="phone" type="tel" maxlength="50" required="required" autocomplete="on" value="+7" pattern="\+7\s?[\(]{0,1}9[0-9]{2}[\)]{0,1}\s?\d{3}[-]{0,1}\d{2}[-]{0,1}\d{2}" placeholder=" Ваш номер телефона: +70123456789" style="
    display: block;
    width: 100%;
    height: 34px;
    padding: 6px 12px;
    font-size: 14px;
    line-height: 1.42857143;
    color: #555;
    background-color: #fff;
    background-image: none;
    border: 1px solid #ccc;
    border-radius: 4px;
    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
    -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s;
    -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
    transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
">
                                
<script type="text/javascript">
  function setCursorPosition(pos, e) {
    e.focus();
    if (e.setSelectionRange) e.setSelectionRange(pos, pos);
    else if (e.createTextRange) {
      var range = e.createTextRange();
      range.collapse(true);
      range.moveEnd("character", pos);
      range.moveStart("character", pos);
      range.select()
    }
  }
 
  function mask(e) {
    //console.log('mask',e);
    var matrix = this.placeholder,// .defaultValue
        i = 0,
        def = matrix.replace(/\D/g, ""),
        val = this.value.replace(/\D/g, "");
    def.length >= val.length && (val = def);
    matrix = matrix.replace(/[_\d]/g, function(a) {
      return val.charAt(i++) || "_"
    });
    this.value = matrix;
    i = matrix.lastIndexOf(val.substr(-1));
    i < matrix.length && matrix != this.placeholder ? i++ : i = matrix.indexOf("_");
    setCursorPosition(i, this)
  }
  window.addEventListener("DOMContentLoaded", function() {
    var input = document.querySelector("#online_phone");
    input.addEventListener("input", mask, false);
    input.focus();
    setCursorPosition(3, input);
  });
</script>
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-2 control-label">Способ доставки</label>
                <div class="col-sm-6">
                    <input type="hidden" name="delivery_type" id="delivery-type" value="" />
                    <input type="hidden" name="delivery_summa" id="delivery-summa" value="0" />
                    <input type="hidden" name="full_summa" id="full-summa" value="0" />
                        <div class="radio">
                            <label><input type="radio" name="delivery" class="js-delivery-type" data-type="Самовывоз" data-summa="0" checked>Самовывоз (бесплатно)</label>
                        </div>
                        <div class="radio">
                            <label><input type="radio" name="delivery" class="js-delivery-type" data-type="В пределах МКАДа" data-summa="200">В пределах МКАДа (200 рублей)</label>
                        </div>
                        <div class="radio">
                        <label><input type="radio" name="delivery" class="js-delivery-type" data-type="Почта России" data-summa="300">Доставка почтой России (300 рублей)</label>
                    </div>
                    <br />
                    <div id="alert-delivery" class="alert alert-info">Если здесь нет вашего варианта, сообщите об этом нам.</div>
                </div>
            </div>
            <div class="form-group">
                <label for="input-address" class="col-sm-2 control-label">Адрес доставки</label>
                <div class="col-sm-6">
                    <textarea class="form-control" id="input-address" name="address" required placeholder="Адрес доставки" row="3"></textarea>
                </div>
            </div>
            <div class="form-group">
                <label for="input-message" class="col-sm-2 control-label">Сообщение</label>
                <div class="col-sm-6">
                    <textarea class="form-control" id="input-message" name="message" required placeholder="Дополнительная информация" row="3"></textarea>
                    <br />
                    <div id="alert-validation" class="alert alert-danger hidden">
                        <button type="button" class="close js-close-alert">&times;</button>
                        <strong>Ошибка!</strong> Заполните обязательные поля, отмеченные *
                    </div>
                    <div id="alert-order-done" class="alert alert-success hidden">
                        <button type="button" class="close js-close-alert">&times;</button>
                        <strong>Спасибо за заказ!</strong> Скоро мы с Вами свяжемся
                    </div>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-6">
                <button id="order-btn" type="submit" class="btn btn-primary">Оформить заказ</button>
    </div>
  </div>
                </div>
            </div>
        </form>
    </div>
 
    <script>
var cart;
var config;
var wiNumInputPrefID;
/* WI-GLOBAL-VARS */
$(document).ready(function(){  
    cart = new WICard("cart");
    config = {'clearAfterSend':true, 'showAfterAdd':false};
    
    cart.init("basketwidjet", config);
    /* WI-MODULES */
    
    
}); 
document.addEventListener('visibilitychange', function(e) {
cart.init("basketwidjet", config);
}, false);
</script>
    <script src="js/vendor/jquery.min.js" type="text/javascript"></script>
    <script src="js/vendor/jquery.cookie.js" type="text/javascript"></script>
    <script src="js/vendor/underscore.min.js" type="text/javascript"></script>
    <script src="js/modules/order.js" type="text/javascript"></script>
    <script src="js/modules/main.js" type="text/javascript"></script>
<script>
document.addEventListener("DOMContentLoaded", function(event) { 
var pri = $('.bsum').text();
$('#pri').val(pri);
$("input[name=pri]").val(pri);
var ord = $('.bitem').text();
$('#ord').val(pri);
$("input[name=ord]").val(ord);
});
</script>
<h1><?php echo $pri;?></h1>
<h1><?php echo $ord;?></h1>
</body>
</html>
Миниатюры
Удаление пробелов и конкретных символов   Удаление пробелов и конкретных символов  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2020, 11:50
Ответы с готовыми решениями:

Удаление конкретных символов из строки, запись результатов в файл
Добрый день, присутствует такая проблема, условие задачи стоит так: Ввести с клавиатуры название файла, затем ввести строку, из которой...

Удаление конкретных строк из массива
Всем привет! Имеется массив, во 2-ом и 3-ем столбцах которого записаны либо 0, либо 1. Необходимо удалить строки, где в 2-ом и 3-ем...

Удаление конкретных параметров из session
Здравствуйте, у меня такой вопрос.. У меня есть корзина, продукты, которые мы добавили в корзину, хранятся в session в виде { ...

18
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
24.11.2020, 14:14
Цитата Сообщение от Nikivinn Посмотреть сообщение
var ord = $('.bitem').text();
Не вижу блока с классом biten в коде. В любом случае так делать не нужно.
0
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 23
24.11.2020, 14:17  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
Не вижу блока с классом biten в коде. В любом случае так делать не нужно.

У меня есть js код который appendit этот блок, вот кусочек из него:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var productLine = '<tr class="bitem" id="wigoodline-' + id + '"> \
                                                    <td>'+ id +'</td> \
                                                    <td><a href="' + url + '">' + photo + name +'</a></td> \
                                                    <td id="lineprice_' + id + '"class="wigoodprice">' + price + ' руб.</td> \
                                                    <td> \
                                                    <div class="basket_num_buttons_min" id="minus_' + id + '">-</div> \
                                                    <span class="basket_num" id="basket_num_' + id + '">'+ num +'</span> \
                                                    <div class="basket_num_buttons_plus" id="plus_' + id + '">+</div></td> \
                                                    <td id="linesum_' + id + '">'+ parseFloat(price * num) +' руб.</td> \
                                                    <td><a href="#" onclick="' + this.objNAME + '.delItem(\'' + id + '\')"><img src="data:image/jpeg;base64,'+ this.IMG + '" /></a></td> \
                                                    </tr>'; 
                }
            $("#btable").append(productLine);
            
            $(".basket_num_buttons").data("min-value");
            }
Но на самом деле, это правда не так важно, я вот где-то читал, что всё таки в php есть много возможностей удалить все табуляции и пробелы, а также конкретные символы, осталось только понять как это сделать:
str_replace()
preg_replace()
ereg_replace()
trime
ничего чего-то не хочет работать должным образом :C
0
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 23
24.11.2020, 14:20  [ТС]
Я таким образом грубо говоря собираю данные с корзины пользователя если говорить кратко:
Миниатюры
Удаление пробелов и конкретных символов  
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
24.11.2020, 14:22
Nikivinn, Так и берите данные из корзины посредством php для формирования письма.
0
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 23
24.11.2020, 15:01  [ТС]
Я вроде думал, что это и делаю, если не прав, можете объяснить или кинуть где почитать как именно это правильно делать ?
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
24.11.2020, 15:24
Nikivinn, Откуда вы берете данные для отображения корзины? Где у вас хранится данные корзины в сессии?
0
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 23
24.11.2020, 22:31  [ТС]
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
/***************************************
<!--
 
powered by nevermiss
 
-->
 **************************************/
 
var local =     {
            "basket_is_empty" : "Корзина пуста", 
            "name" : "Название",
            "price" : "Цена",
            "all" : "Итого",
            "order" : "Оформить заказ",
            "basket" : "Корзина Salute MSK",
            "num" : "Кол-во",
            "send" : "Спасибо за покупку!\nМы свяжемся с Вами в ближайшее время",
            "goods" : "Товаров",
            "amount" : "на сумму"
            };
 
function WICard(obj, plugins)
    {
    this.widjetX = 0;
    this.widjetY = 0;   
    this.widjetObj;
    this.widjetPos;
    this.cardID = "";
    this.DATA = {};
    this.IDS = [];
    this.objNAME = obj;
    this.CONFIG = {};
    this.IMG = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABpFBMVEUAAABEREBEREBEREBEREASEhEJCQgGBgYBAQEAAAAGBgUHBwYAAAAAAAADAwNEREBEREAJCQkICAcGBgYFBQUJCQgnJyVEREAICAgBAQEAAAAICAcAAAAAAAAAAAAJCQgAAAAGBgYBAQEQEA8NDQwHBwcBAQEMDAsSEhEJCQkBAQEBAQEBAQFAQDxEREBEREADAwIAAAABAQESEhEkJCIAAAAICAgAAAAQEA9EREAAAAATExIAAAAKCgkNDQwAAAAAAAABAQETExIHBwcDAwMDAwMTExIAAAAAAAABAQEAAAAAAAAAAAAAAAAAAAAAAAADAwIAAAAGBgUBAQEWFhUAAAAAAAAHBwYBAQEVFRMDAwMHBwcUFBMWFhUBAQETExIAAAAAAAADAwMMDAsAAAAAAAASEhEAAAAUFBMAAAAJCQkrKygDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMAAAAJCQgAAAAiIiABAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQFEREAFBQUBAQEAAAAGBgYICAgHBwcBAQEJW8x2AAAAhXRSTlMAAQcIAjJ0kZqZnp+LaygNDxKw/v6wIwPY1A+upf4nenGWvXCg/Pubc8eSmLkcHxpW+vlhBr6hl3EDUl9pop5Q+fhe+1FPXVT8mlxfXWD9+1dbnPRRRved9ldI+Fhd+mBaVlSYWJN1V2dqwwVTA8ORvJXAknRzKii2rCjc3BUTqagrepgUbRZwswAAAAlwSFlzAAAASAAAAEgARslrPgAAAb1JREFUOMuNk2dTwkAQhpdiCZagotiwd5RYQeyKJdii2FDsvffeG0TJnza3lzg4kBnv0zt5NpvdZ3IA/zs6vUGv00wAxrj4hESGnERTkomk5JRU1swaFZ6WnhEMieSEgl9qsmRmWVWe/R2W8KkUjkw5uUr/vNhcEvPpLHEZGly0FYA8pb4wqMFFscioBzAU06lKSsvKKa+orKqmqYY1yB3smGvrHFx9A0mNTQ6uuQU7Oc1yB50Lc6uDc0ObXNHYTlIHfqmTJaZcmLvkpwDdPb19hAODkzjRlAuzpx93GhhEPsTjpF6gBTg1PyxnN4d8hHKJoQUhuhU/qvKxcWVTWmAPKlsLE5RP8qoJLND5vhQ/U9PIYWZWNcWgyTnFpH+ecoCFgNKTQZM+atK/qHI3txSg73gjTC6vIF9dw0nXhSiTG8g3eaEeJ92KMrlN+I4gSp5dkvaiTO4fAKwJ6PQQ4Og4wuQJ3fp070zZXzhJOafpAgsuQ2Gtf+4KC64tWtx2gybZW61/8g7QpPn+ITZ/fAI0yVqfX2wx+r8+gxVNkl3f3j+cnU4v3j4vSa73NwDrJ5qkt+f3Jv5N6u3Vvt0/UGcpYbC85ecAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMDUtMThUMDY6MDM6MzEtMDU6MDALk1CfAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTA1LTE4VDA2OjAzOjMxLTA1OjAwes7oIwAAAABJRU5ErkJggg==";
    
    
    this.init = function(widjetID, config)
        {
        this.CONFIG = config || {};
        try {
            this.DATA = JSON.parse(localStorage.getItem(widjetID)); 
            if ($.isEmptyObject(this.DATA))
                {
                this.DATA = {};
                }   
            } 
            catch (e) 
            {
            this.DATA = {};
            }   
        try  {
            this.IDS = JSON.parse(localStorage.getItem(widjetID + "_ids"));
            if ($.isEmptyObject(this.IDS))
                {
                this.IDS = [];
                }   
            } 
            catch (e) 
            {
            this.IDS = [];
            }   
        
        this.cardID = widjetID; 
        
        this.widjetObj = $("#" + widjetID);
            
        
        if ($.isEmptyObject(this.DATA))
            {
            this.widjetObj.html(local.basket_is_empty);
            }
            else
            {
            this.reCalc();  
            this.renderBasketTable();
            }
        
        }
        
/***********************************************************************************************
 * example: onclick="cart.addToCart(this, '2', 'Name of comic 2', '25500')                      
 **********************************************************************************************/
    this.addToCart = function(curObj, id, params)
        {
        var kol = 1;
        
        if ( $("input").is("#" + wiNumInputPrefID + id) )
            {
            kol = parseInt( $("#" + wiNumInputPrefID + id).val() ); 
            }
                
        id = ( $.isNumeric(id) ) ? "ID" + id.toString() : id;
        
        var id_ = ( $.isEmptyObject(params.subid) ) ? id : id + "_" + params.subid;
        
         
        var goodieLine = {"id" : id_, "name" : params.name, "price": params.price, "num" : kol, "url" : document.location.href, "photo" : ""};
        
        if ($.isEmptyObject(this.DATA))
            {
            this.DATA[id_] = goodieLine;    
            this.IDS.push(id_);
            }
        else
        for(var idkey in this.DATA) 
            {
            
            
            if($.inArray(id_, this.IDS) === -1)
                {
                this.DATA[id_] = goodieLine;
                this.IDS.push(id_)
                
                }
            else    
            if (idkey == id_)
                {
                
                this.DATA[idkey].num += kol;    
                
                }
            }
        
        localStorage.setItem(this.cardID, JSON.stringify(this.DATA));
        localStorage.setItem(this.cardID + "_ids", JSON.stringify(this.IDS));
        this.reCalc();
        
        this.renderBasketTable();
        
        if (this.CONFIG.showAfterAdd)
            {
            cart.showWinow('bcontainer', 1);
            }
        }
    this.reCalc = function()
        {
        var num = 0;
        var sum = 0;    
        for(var idkey in this.DATA) 
            {
            num += parseInt(this.DATA[idkey].num);
            sum += parseFloat(parseInt(this.DATA[idkey].num) * parseFloat(this.DATA[idkey].price));
            }
            
        // *** currency plugin *** //
        
        if (typeof WICartConvert == 'function' )
                {
                sum = WICartConvert(sum);
                }
                
        // *** //               
        this.widjetObj.html(local.goods + " " + num + " " + local.amount + " " + sum + " Руб.");
        localStorage.setItem(this.cardID, JSON.stringify(this.DATA));
        }
    this.clearBasket = function()
        {
        this.DATA = {}; 
        this.IDS = [];
        this.widjetObj.html(local.basket_is_empty); 
        localStorage.setItem(this.cardID, "{}");
        localStorage.setItem(this.cardID + "_ids", "[]");
        $("#btable").html('');
        $("#bcontainer").remove();
        $("#blindLayer").remove(); 
        }   
    this.renderBasketTable = function()
        {
        
        if ($('#bcontainer').length == 0)
            {       
            $("body").append(" \
                <div id='blindLayer' class='blindLayer'></div> \
                <div id='bcontainer' class='bcontainer'> \
                <div id='bsubject'>" + local.basket + "<a id='bclose' href='#' onclick='" + this.objNAME + ".closeWindow(\"bcontainer\", 1);'><img src='data:image/jpeg;base64,"+ this.IMG + "' /></a></div> \
                <table id='bcaption'><tr><td>ID</td><td>" + local.name + "</td><td>" + local.price + "</td><td>" + local.num + "</td><td>" + local.all + "</td><td></td></tr></table> \
                <div id='overflw'><table class='btable' id='btable'></table></div> \
                <div id='bfooter'> <button class='bbutton' onclick=\"window.location.href = 'order.html';\">" + local.order + "</button><span id='bsum'>...</span></div> \
                </div> \
            "); 
            
            }
            else 
            {
            $("#btable").html("");  
            }
        this.center( $("#bcontainer") ) 
        
        for(var idkey in this.DATA) 
            {
                
            with (this.DATA[idkey])
                {
                var productLine = '<tr class="bitem" id="wigoodline-' + id + '"> \
                                                    <td>'+ id +'</td> \
                                                    <td><a href="' + url + '">' + photo + name +'</a></td> \
                                                    <td id="lineprice_' + id + '"class="wigoodprice">' + price + ' руб.</td> \
                                                    <td> \
                                                    <div class="basket_num_buttons_min" id="minus_' + id + '">-</div> \
                                                    <span class="basket_num" id="basket_num_' + id + '">'+ num +'</span> \
                                                    <div class="basket_num_buttons_plus" id="plus_' + id + '">+</div></td> \
                                                    <td id="linesum_' + id + '">'+ parseFloat(price * num) +' руб.</td> \
                                                    <td><a href="#" onclick="' + this.objNAME + '.delItem(\'' + id + '\')"><img src="data:image/jpeg;base64,'+ this.IMG + '" /></a></td> \
                                                    </tr>'; 
                }
            $("#btable").append(productLine);
            
            $(".basket_num_buttons").data("min-value");
            }
        //* кнопки +/-
        var self = this;
        for(var ids in this.IDS)
            {
            $('#minus_' + this.IDS[ids]).bind("click", function() {
            var cartItemID =  $(this).attr("id").substr(6);
            var cartNum = parseInt($("#basket_num_" + cartItemID).text());
            var cartNum = (cartNum > 1) ? cartNum - 1 : 1;
            self.DATA[cartItemID].num = cartNum;
            
            $("#basket_num_" + cartItemID).html(cartNum);
            var price = parseFloat( $("#lineprice_" + cartItemID).html() );
            $("#linesum_" + cartItemID).html( parseFloat(price * cartNum) + ' руб.' );
            
            self.sumAll();
            self.reCalc();
            
            });
            
            $('#plus_' + this.IDS[ids]).bind("click", function() {
            var cartItemID =  $(this).attr("id").substr(5);
            var cartNum = parseInt($("#basket_num_" + cartItemID).text());
            var cartNum = (cartNum < 1000000) ? cartNum + 1 : 1000000;
            self.DATA[cartItemID].num = cartNum;
            $("#basket_num_" + cartItemID).html(cartNum);
            var price = parseFloat( $("#lineprice_" + cartItemID).html() );
            $("#linesum_" + cartItemID).html( parseFloat(price * cartNum)  + ' руб.' );
            
            self.sumAll();
            self.reCalc();
            
            });
            
            }
        this.sumAll();  
        
        }
    this.sumAll = function()
        {
        var sum = 0;
        for(var idkey in this.DATA) { sum += parseFloat(this.DATA[idkey].price * this.DATA[idkey].num); }
        $("#bsum").html(sum + " руб.");  
        }   
    this.center = function(obj)
        {
        
        obj.css({"top" : "200px"});
            obj.css({"left" : Math.max(0, (($(window).width() - $(obj).outerWidth()) / 2) + $(window).scrollLeft()) + "px"});   
            return obj;
        }   
    this.showWinow = function(win, blind)
        {
        $("#" + win).show();
        if (blind)
        $("#blindLayer").show();    
        }
    this.closeWindow = function(win, blind)
        {
        $("#" + win).hide();
        if (blind)
        $("#blindLayer").hide();    
        }
    this.delItem = function(id)
        {
        if (confirm("Удалить #" + id + "?")) 
            {
            $("#btable").html("");  
            delete this.DATA[id];
            this.IDS.splice( $.inArray(id, this.IDS), 1 );
            this.reCalc();
            this.renderBasketTable();
            localStorage.setItem(this.cardID, JSON.stringify(this.DATA));
            localStorage.setItem(this.cardID + "_ids", JSON.stringify(this.IDS));
            if (this.IDS.length == 0)
            this.widjetObj.html(local.basket_is_empty); 
            } 
        }
    this.sendOrder = function(domElm)   
        {
        if (this.CONFIG.validate)   
            {
            var valid = this.CONFIG.validate.validationEngine('validate');
            if (!valid) return false;
            $('.formError').remove();
            }   
        var bodyHTML = "";
        var arr = domElm.split(",");
        
        for (var f=0; f < arr.length; f++) {
        
            bodyHTML +=  this.getForm(arr[f]) + "<br><br>"; 
            
            };
        $('.basket_num_buttons').remove();
        $.post( "sendmail.php?subj=Order WICart", { "order": bodyHTML }).done(function( data ) {
        cart.closeWindow("bcontainer", 1)   
        cart.closeWindow("order", 0);
        if (cart.CONFIG.clearAfterSend)
            {
            cart.clearBasket();
            } 
        alert(local.send);  
        });
        
        }
    this.getForm = function (formId)
        {
        var formObj = document.getElementById(formId);
        var copyForm = formObj.cloneNode(true);
        
        INPUTS=[].slice.call( copyForm.querySelectorAll("input,select,textarea") );
    
        INPUTS.forEach(function(elm)
            {
             if ( (elm.tagName == 'INPUT') && (elm.type == 'checkbox') )
                    {   
                    var spanReplace = document.createElement("span");
                    spanReplace.innerHTML = (elm.checked) ? elm.value : ""; 
                    elm.parentNode.replaceChild(spanReplace, elm);  
                    }
            else 
            if ( (elm.tagName == 'INPUT') && (elm.type == 'radio') )
                    {
                    var spanReplace = document.createElement("span");
                    spanReplace.innerHTML = (elm.checked) ? elm.value : ""; 
                    elm.parentNode.replaceChild(spanReplace, elm);  
                    }
            else
            if  ( (elm.tagName == 'INPUT') && ((elm.type == 'text') || (elm.type == 'hidden')) )    
                    {   
                    var subjP = document.createElement('b');
                    subjP.innerHTML = elm.placeholder;  
                    elm.parentNode.insertBefore(subjP, elm);
                    var spanReplace = document.createElement("div");
                    spanReplace.innerHTML = elm.value;  
                    elm.parentNode.replaceChild(spanReplace, elm);  
                    }
            else 
            if (elm.tagName == 'TEXTAREA')
                    {
                    var subjP = document.createElement('b');
                    subjP.innerHTML = elm.placeholder;  
                    elm.parentNode.insertBefore(subjP, elm);
                    var spanReplace = document.createElement("div");
                    spanReplace.innerHTML = $("#" + elm.id).val();  
                    elm.parentNode.replaceChild(spanReplace, elm);      
                    }
            if (elm.tagName == 'SELECT')
                    {
                    var selVal = $("#" + elm.id + " option:selected").val();
                    $( elm ).replaceWith( selVal ); 
                    }
 
            });
    
    
    return copyForm.innerHTML;
        }
    }
^^^ wi cart корзина ^^^
далее идёт мой html код, например с оформлением заказа:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
<!--
 
powered by nevermiss
 
-->
 
 
 
<!doctype html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="SaluteMSK">
    <meta name="author" content="SaluteMSK">
    <meta property="og:image:secure_url" content="https://salutemsk.ru/assets/images/services-bg.jpg">
    <meta property="og:image:type" content="image/jpg" />
    <meta property="og:image:width" content="400" />
    <meta property="og:image:height" content="300" />
    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
    <title>SALUTE MSK</title>
    <link href='https://fonts.googleapis.com/css?family=Ubuntu:400,700&subset=latin,cyrillic-ext' rel='stylesheet' type='text/css'>
    <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css">
    <link href="css/main.css" rel="stylesheet" type="text/css">
    <link rel="stylesheet" type="text/css" href="themes/theme1.css" />
    <link rel="stylesheet" type="text/css" href="wicart.css" />
    <script src="http://code.jquery.com/jquery-1.11.0.min.js" type="text/javascript" ></script>
    <script src="wicart.js"  type="text/javascript" ></script>
    <style>
    .v {border:1px solid #999; border-radius: 5px;padding: 10px;margin-bottom: 10px; width: 340px;}
    </style>    
<script>
function submitForm() {
  if (
    confirm(
      "Данные заполнены верно, пожалуйста нажмите на кнопку 'ОК', чтобы ваш заказ был оформлен!"
    )
  ) {
    alert(" Ваш заказ успешно оформлен! Ожидайте, и мы скоро вам позвоним! :) ");
  } else {
    alert(" Вы отказались от оформления заказа :( ");
    return false;
  }
}
 
</script>   
 
</head>
<body data-page="order">
 
 
    <div class="container">
        <h1>Оформление заказа. Интернет-магазин Salute MSK</h1>
        <br />
        <ul class="nav nav-pills">
            <li><a href="https://salutemsk.ru/index.html">Главная</a></li>
              <li class="nav-item">
                <a class="nav-link" href="#" id="basketwidjet" onclick="cart.showWinow('bcontainer', 1)"></a>
              </li>
            <li class="active"><a href="order.html">Оформление заказа</a></li>
        </ul>
        <br />
        <br />
        <div id="order-message" class="alert alert-info">Обязательно к заполнению.</div>
        <br />
        <form action="scriptorder.php" method="post" id="order-form" class="form-horizontal" role="form" onsubmit="return submitForm(this);">
                <input type="hidden" name="cus" value="Имя клиента: "/>
                <input type="hidden" name="mai" value="Почта клиента: "/>
                <input type="hidden" name="pho" value="Телефон клиента: "/>
                <input type="hidden" name="spo" value="Способ доставки(on/off): "/>
                <input type="hidden" name="adr" value="Адрес клиента: "/>           
                <input type="hidden" name="msg" value="Сообщение клиента: "/>
                <input type="hidden" name="ito" value="Заказ клиента: "/>
                <input type="hidden" name = "tov" id ="tov" value = "Товары: " /> 
                <input type="hidden" name = "ord" id ="ord" value = "" />   
                <input type="hidden" name = "nas" id ="nas" value = "На сумму: " />  
                <input type="hidden" name = "pri" id ="pri" value = "" />               
            
            <div class="form-group">
                <label for="input-name" class="col-sm-2 control-label">Ваши полные инициалы *</label>
                <div class="col-sm-6">
                    <input type="text" class="form-control" id="input-name" name="name" required placeholder="Как мы можем к вам обращаться?">
                </div>
            </div>
            <div class="form-group">
                <label for="input-email" class="col-sm-2 control-label">Email *</label>
                <div class="col-sm-6">
                    <input type="email" class="form-control" id="input-email" name="email" required placeholder="Ваш адресс электронной почты">
                </div>
            </div>
            <div class="form-group">
                <label for="input-phone" class="col-sm-2 control-label">Телефон *</label>
                <div class="col-sm-6">
                <input id="" name="phone" type="tel" maxlength="50" required="required" autocomplete="on" value="+7" pattern="\+7\s?[\(]{0,1}9[0-9]{2}[\)]{0,1}\s?\d{3}[-]{0,1}\d{2}[-]{0,1}\d{2}" placeholder=" Ваш номер телефона: +70123456789" style="
    display: block;
    width: 100%;
    height: 34px;
    padding: 6px 12px;
    font-size: 14px;
    line-height: 1.42857143;
    color: #555;
    background-color: #fff;
    background-image: none;
    border: 1px solid #ccc;
    border-radius: 4px;
    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
    -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s;
    -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
    transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
">
                                
<script type="text/javascript">
  function setCursorPosition(pos, e) {
    e.focus();
    if (e.setSelectionRange) e.setSelectionRange(pos, pos);
    else if (e.createTextRange) {
      var range = e.createTextRange();
      range.collapse(true);
      range.moveEnd("character", pos);
      range.moveStart("character", pos);
      range.select()
    }
  }
 
  function mask(e) {
    //console.log('mask',e);
    var matrix = this.placeholder,// .defaultValue
        i = 0,
        def = matrix.replace(/\D/g, ""),
        val = this.value.replace(/\D/g, "");
    def.length >= val.length && (val = def);
    matrix = matrix.replace(/[_\d]/g, function(a) {
      return val.charAt(i++) || "_"
    });
    this.value = matrix;
    i = matrix.lastIndexOf(val.substr(-1));
    i < matrix.length && matrix != this.placeholder ? i++ : i = matrix.indexOf("_");
    setCursorPosition(i, this)
  }
  window.addEventListener("DOMContentLoaded", function() {
    var input = document.querySelector("#online_phone");
    input.addEventListener("input", mask, false);
    input.focus();
    setCursorPosition(3, input);
  });
</script>
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-2 control-label">Способ доставки</label>
                <div class="col-sm-6">
                    <input type="hidden" name="delivery_type" id="delivery-type" value="" />
                    <input type="hidden" name="delivery_summa" id="delivery-summa" value="0" />
                    <input type="hidden" name="full_summa" id="full-summa" value="0" />
                        <div class="radio">
                            <label><input type="radio" name="delivery" class="js-delivery-type" data-type="Самовывоз" data-summa="0" checked>Самовывоз (бесплатно)</label>
                        </div>
                        <div class="radio">
                            <label><input type="radio" name="delivery" class="js-delivery-type" data-type="В пределах МКАДа" data-summa="200">В пределах МКАДа (200 рублей)</label>
                        </div>
                        <div class="radio">
                        <label><input type="radio" name="delivery" class="js-delivery-type" data-type="Почта России" data-summa="300">Доставка почтой России (300 рублей)</label>
                    </div>
                    <br />
                    <div id="alert-delivery" class="alert alert-info">Если здесь нет вашего варианта, сообщите об этом нам.</div>
                </div>
            </div>
            <div class="form-group">
                <label for="input-address" class="col-sm-2 control-label">Адрес доставки</label>
                <div class="col-sm-6">
                    <textarea class="form-control" id="input-address" name="address" required placeholder="Адрес доставки" row="3"></textarea>
                </div>
            </div>
            <div class="form-group">
                <label for="input-message" class="col-sm-2 control-label">Сообщение</label>
                <div class="col-sm-6">
                    <textarea class="form-control" id="input-message" name="message" required placeholder="Дополнительная информация" row="3"></textarea>
                    <br />
                    <div id="alert-validation" class="alert alert-danger hidden">
                        <button type="button" class="close js-close-alert">&times;</button>
                        <strong>Ошибка!</strong> Заполните обязательные поля, отмеченные *
                    </div>
                    <div id="alert-order-done" class="alert alert-success hidden">
                        <button type="button" class="close js-close-alert">&times;</button>
                        <strong>Спасибо за заказ!</strong> Скоро мы с Вами свяжемся
                    </div>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-6">
                <button id="order-btn" type="submit" class="btn btn-primary">Оформить заказ</button>
    </div>
  </div>
                </div>
            </div>
        </form>
    </div>
 
    <script>
var cart;
var config;
var wiNumInputPrefID;
/* WI-GLOBAL-VARS */
$(document).ready(function(){  
    cart = new WICard("cart");
    config = {'clearAfterSend':true, 'showAfterAdd':false};
    
    cart.init("basketwidjet", config);
    /* WI-MODULES */
    
    
}); 
document.addEventListener('visibilitychange', function(e) {
cart.init("basketwidjet", config);
}, false);
</script>
    <script src="js/vendor/jquery.min.js" type="text/javascript"></script>
    <script src="js/vendor/jquery.cookie.js" type="text/javascript"></script>
    <script src="js/vendor/underscore.min.js" type="text/javascript"></script>
    <script src="js/modules/order.js" type="text/javascript"></script>
    <script src="js/modules/main.js" type="text/javascript"></script>
<script>
document.addEventListener("DOMContentLoaded", function(event) { 
 
var pri = $('#bsum').text();
$('#pri').val(pri);
$("input[name=pri]").val(pri);
 
var ord = $('.bitem').text();
$('#ord').val(ord);
$("input[name=ord]").val(ord);
 
});
</script>
<h1><?php echo $pri;?></h1>
<h1><?php echo $ord;?></h1>
</body>
</html>
И наконец PHP который всё это хавает:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
    $pri = $_POST['pri'];
    $ord = $_POST['ord'];
    $name = $_POST["name"];
    $email = $_POST["email"];
    $phone = $_POST["phone"];
    $delivery = $_POST["delivery"];
    $address = $_POST["address"];
    $message = $_POST["message"];
    $cus = $_POST["cus"];
    $mai = $_POST["mai"];
    $pho = $_POST["pho"];
    $spo = $_POST["spo"];
    $adr = $_POST["adr"];
    $msg = $_POST["msg"];
    $ito = $_POST["ito"];
    $tov = $_POST["tov"];
    $nas = $_POST["nas"];
    $file = fopen('orders.txt', 'a+'); //Open your .txt file
    $content = $cus . $name . PHP_EOL . $mai . $email . PHP_EOL . $pho . $phone . PHP_EOL . $spo . $delivery . PHP_EOL . $adr . $address . PHP_EOL . $msg . $message . PHP_EOL . $ito . PHP_EOL . $tov . PHP_EOL . $ord . PHP_EOL . $nas . PHP_EOL . $pri . PHP_EOL;
    fwrite($file , $content . PHP_EOL); //Now lets write it in there
    fclose($file ); //Finally close our .txt
    die(header("Location: ".$_SERVER["HTTP_REFERER"]));
?>
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
24.11.2020, 23:25
Nikivinn, Вижу, что данные хранятся в localStorage. Так же у корзины уже есть метод cart.sendOrder().

Тут можно увидеть пример использования http://www.webmasters.by/artic... icart.html


Вы так же можете получить данные с корзины cart.DATA
Так же есть метод cart.clearBasket() для очистки корзины.

И ваш способ
JavaScript
1
$("input[name=ord]").val(JSON.stringify(cart.DATA));
PHP
1
2
$ord = json_decode($_POST['ord']);
var_dump($ord);
1
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 23
24.11.2020, 23:55  [ТС]
Способ мне ваш понравился, и я уже был капец радостный если бы не вот эта проблема:

Как я понял, что-то связано с переводом данных в строчку


PHP
1
2
object(stdClass)#2 (2) { ["P7031"]=> object(stdClass)#1 (6) { ["id"]=> string(5) "P7031" ["name"]=> string(18) "Щелкунчик" ["price"]=> string(3) "480" ["num"]=> int(1) ["url"]=> string(46) "http://neversuffer6.000webhostapp.com/sal.html" ["photo"]=> string(0) "" } ["P7039"]=> object(stdClass)#3 (6) { ["id"]=> string(5) "P7039" ["name"]=> string(12) "Град 100" ["price"]=> string(3) "410" ["num"]=> int(1) ["url"]=> string(46) "http://neversuffer6.000webhostapp.com/sal.html" ["photo"]=> string(0) "" } }
Recoverable fatal error: Object of class stdClass could not be converted to string in /storage/ssd3/888/15429888/public_html/scriptorder.php on line 6
Миниатюры
Удаление пробелов и конкретных символов  
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
25.11.2020, 00:09
Nikivinn, А там же по умолчанию json_decode возвращает объект. Нужно вторым параметром указать true, чтоб получался ассоциативный массив.

PHP
1
2
$ord = json_decode($_POST['ord'], true);
var_dump($ord); die();
У вас в переменной $ord будет лежать массив. Который нельзя просто так конкатенировать со строкой. Лучше конечно сделать отдельный файл с шаблоном письма.
1
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 23
25.11.2020, 00:18  [ТС]
Да, увидел его, спасибо.

А разве не получится просто с помощью json_encode() или чего-нибудь переделать массив в строку ?
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
25.11.2020, 00:23
Можно конечно и извернуться через какие-нибудь array_map и implode

PHP
1
2
3
4
5
6
7
8
9
$content = $cus . $name . PHP_EOL . $mai . $email . PHP_EOL . $pho . $phone . PHP_EOL . $spo . $delivery . PHP_EOL . $adr . $address . PHP_EOL . $msg . $message . PHP_EOL . $ito . PHP_EOL . $tov . PHP_EOL 
    . implode(PHP_EOL . PHP_EOL, array_map(function($item) {
        return $item['id'] . PHP_EOL 
            . $item['name'] . PHP_EOL 
            . $item['price'] . PHP_EOL 
            . $item['num'] . PHP_EOL 
            ($item['num'] * $item['price']);
    }, $ord)) 
    . PHP_EOL . $nas . PHP_EOL . $pri . PHP_EOL;
Добавлено через 3 минуты
Nikivinn,
Но все равно, проще написать простенький шаблонизатор. И не придется через форму передавать скрытые поля типа

<input type="hidden" name="pho" value="Телефон клиента: "/>

Чуть позже накидаю пример.
1
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 23
25.11.2020, 00:25  [ТС]
Спасибо большое, что помогаете, я просто на самом деле до сих пор и в js и php плаваю, поэтому видимо до толкового сразу не додумался
Вложения, ожидающие проверки
Тип файла: jpg testingstill.jpg
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
25.11.2020, 00:31
Nikivinn, Тут конечно вопрос, зачем вам передавать такие поля как
<input type="hidden" name="pho" value="Телефон клиента: "/>

Когда вы можете вручную написать этот текст в php

PHP
1
2
$content = 'Имя клиента: ' . $name . PHP_EOL
    . 'Телефон клиента: ' . $phone;
0
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 23
25.11.2020, 00:35  [ТС]
Я думал типо, работает.. и слава богу))
Миниатюры
Удаление пробелов и конкретных символов  
0
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 23
25.11.2020, 23:08  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
Пока что только до такого додумался, но проблема ещё в том, если другой продукт возьмёт клиент, подсчёт строк уже будет другой:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function replaceStrAt($str, $substr, $from, $to = null){
  is_null($to) and $to = $from;
  return mb_substr($str, 0, $from) . $substr . mb_substr($str, $to + 1);
}
function insertSubstrInto($str, $substr, $index){
  return mb_substr($str, 0, $index) . $substr . mb_substr($str, $index);
}
 
 
 
 
$str = '\|/ P4002                                                   Космо-Дождь                                                   840 руб.                                                                                                         -                                                   2                                                   +                                                   1680 руб.                                                                                                                                                            P4003                                                   Альфа                                                  1140 руб.                                                                                                        -                                                   2                                                   +                                                   2280 руб.                                                                                                        ';
 
 
$v = preg_replace('/\s\s+/', ' \|/ ', $str);
 
echo insertSubstrInto($v, "\t\n", 70), "\n";
 
?>


Может сможете додумать или подсказать что-то толковое ?

Также товарищ написал рабочий код на С#, как в PHP его перевести тоже не особо соображу:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.IO;
using System.Text;
using System.Collections.Generic;
 
namespace Order
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"orders.txt"; //Иницилизация (путь к файлу)
            string[] l = File.ReadAllLines(path); // Заполнения массива стринг строками файла то есть:
 
            /*  l[] = {}
             *  string[] l = File.ReadAllLines(path);
             *  l[] = {Каждая строка, , , , , , ,}
             */
 
 
            if (File.Exists(path))// Проверка на существование файла
            {
                for (int i = 0; i < l.Length; i++)// Фор от 0 до количества элементов строки
                {
                    
                    string StrElement = Convert.ToString(l[i]); // Засовываю в переменную StrElement iтый элемент строки l[]
                    for (int j = 0; j < l[i].Length; j++) // Пробегаюсь по всем элементм дважды (Потому что некоторые двойные пробелы заменяясь на 1 могут создавать очередной двойной пробел)
                    {
                        for (int k = 0; k < l[k].Length; k++)// Бла бла пробеги
                        {
                            StrElement = StrElement.Replace("   ", "");// Использую функцию которая возвращает строку без элемента который я сначала узал то бишь заменяя его на пустую строку
                        }
                        for (int k = 1; k < l[k].Length - 1; k++)
                        {
                            if(l[k] == " ")// Проверка не является ли вся строка пробелом
                            {
                                l[k].Remove(l[k].Length);// Её удаление
                            }
                            
                        }
 
                    }
                    
                    Console.WriteLine(StrElement);// Вывод в консоль
                }
            }
 
            
        }
    }
}
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
25.11.2020, 23:12
Nikivinn, А чем вас не устраивает мой вариант?
0
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 23
25.11.2020, 23:23  [ТС]
Там массив выводится, а я чего-то не особо понял, что с ним делать)))

Я вот пока что вот так сделал
Миниатюры
Удаление пробелов и конкретных символов  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.11.2020, 23:23
Помогаю со студенческими работами здесь

Удаление данных из конкретных столбцов в DataGridView
Здравствуйте, возникла такая проблема. Есть таблица из 5 столбцов, по первой кнопке я заполняю таблицу данными из текстового файла, по...

lineedit вывод конкретных символов
помогите пожалуйста 1. вывести символов из lineedit между двумя словами 2.ничего выводить если строка пустая или таких слов нет. ...

Ввод только конкретных символов в консоль
Добрый день. Вопрос таков. Делаю тест, он консольный. Ответ на него только Да и Нет и соответственно я решил сделать ввод либо символа Y...

Ищу готовую регулярку для замены символов в конкретных блоках
Есть типа тег/блок в тексте. Например (block)(/block). Вложенность не предусмотрена. Кол-во блоков неограниченно. Режим /uim Внутри этих...

MS VC++ 6.0:Как "подавить" выдачу конкретных варнингов в конкретных местах?
Не хочу, чтобы выдавались конкретные варнинги, относящиеся к определённым областям заданных файлов. Как это сделать. Про...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru