Подскажите код, который бы искал все даты типа XX.XX.XXXX и заменял их чем-то
Имею textarea, куда вставляю некоторый HTML-код.
jQuery должен в этом тексте найти все фрагменты определенного формата, например, 30.07.2017, и заменить их на, скажем, <div class="vrotego">31.07.2017</div> Как попросить jQuery найти все однотипные выражения, состоящие из двух цифр точки еще двух цифр точки и четырех цифр? Спасибо. |
Stenli,
reg = /\d{2}\.\d{2}\.\d{4}/g; str = " 30.07.2017 30.07.2017" str = str.replace(reg, '<div class="vrotego">$&</div>'); alert(str) |
А если беда такая, что заменить нужно на
<?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?> Я бы сразу так спросил, но совсем не мог подумать, что на выходе в другом textarea у меня вот это <? будет заменяться на вот это <!--? |
Stenli,
не понимаю |
^) что же я сегодня такой загадочный...
Давайте по-другому: Мне нужно, чтобы все даты вида xx.xx.xxxx заменялись на <?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?> То есть все как в первом сообщении. Ваша подсказка работает, только в результате у меня меняется на <!--?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?--> Добавляются знаки закомментировывания <!-- --> [IMG SRC=http://f6.s.qip.ru/~6wVwQIbF.png] |
Цитата:
|
Безусловно. Грешу на свои пальцы из ушей и мозги из пяток.
Тыкал тыкал и понял, что такая подстанова происходит, когда jQuery видит комбинацию "<?". Он решает ее САМ заменить на "<!--?". Если я знак вопроса первый уберу, то все ставится как надо, не меняется. Как сделать, чтобы не появлялись знаки комментариев? |
Jquery тоже не в чем не виноват
<!DOCTYPE HTML> <head> </head> <body> <div>1<?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?></div> <div>2<?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?></div> </body> </html> посмотрите код и результат, это браузер виноват!! мы с вами нашли виноватого! |
Это очень и очень странно.
Потому что я пробовал подставить < > но браузер выдал их в таком же неизменном виде. Кстати, как вы делаете кнопку "Просмотреть"? Чтобы код можно было сразу запустить из сообщения? Вот, попробуйте с нижепоказанным кодом ввести любую дату формата ДД.ММ.ГГГГ. Получится на выходе <!--?=date(d.m.Y, strtotime(0 day));?--> Как победить, ума не приложу. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="assets/css/bootstrap/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="assets/css/main.css"> <script type="text/javascript" src="assets/js/jquery-3.2.1.min.js"></script> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script type="text/javascript" src="assets/js/bootstrap.min.js"></script> <script type="text/javascript" src="assets/js/preland.js"></script> <title>Preland convert</title> </head> <body> <div class="container"> <div class="row"> <div class="text-center" style="margin-top: 20px;"> <button type="button" name="sendTo" value="Send to" id="sendTo" class="btn btn-success">Адаптировать</button> </div> <div class="text-center" style="font-size: 12px; margin: 10px;">Каждый новый текст требует обновления страницы (F5 на клавиатуре или кнопка обновить <span class="glyphicon glyphicon-repeat"></span>)</div> <hr /> <div class="col-lg-12"> <label>Введите html-текст, который нужно адаптировать (правая кнопка мыши + вставить или Ctrl+V)</label> <textarea class="form-control" name="insertArea" id="insertArea" cols="80" rows="10"></textarea> </div> <div class="col-lg-12" style="margin-top: 10px;"> <label>Скопируйте/вырежьте адаптированный html-текст (правая кнопка мыши + копировать или Ctrl+C/X)</label> <textarea class="form-control" name="pastArea" id="pastArea" cols="80" rows="10"></textarea> </div> <br> </div> </div> </body> </html> $(document).ready(function() { var Final = ''; $('#sendTo').on('click', function () { var insertData = $('#insertArea').val(); var bodyVal = $("<body>", {html : insertData}); var div = $("<div>", {html : insertData}); // replace dates var reg = /\d{2}\.\d{2}\.\d{4}/g; $(div).html(function (a,h) { return h.replace(reg, '<?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?>'); }); // display result Final += "@include('layers.header') <body> " + div.html() + " @include('layers.footer')"; $('#pastArea').val(Final); }); }); |
j0hnik,
Stenli, Вы что хрень несете, какие <?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?> могут быть на клиенте? |
Часовой пояс GMT +3, время: 09:46. |