我在config.php页面中有一个textarea,可以在其中保存带有替换为PHP的占位符的文本,然后再加载到另一个页面send.php中:
我的占位符类似于:{name},{surname},{others},{sometext},...
示例页面config.php
<textarea>Dear {name}, this is the list of your products: {others}</textarea>
然后,当我加载send.php时:
<?php
$info_user = get_info_user($id);
$text = load_text_from_page_config();
$replacements = array(
'({name})' => $info_user['name'], //John
'({surname})' => $info_user['surname'] //Smith
);
$text = preg_replace( array_keys( $replacements ), array_values( $replacements ), $text);
echo '<textarea>' . $text . '</textarea>';
因此在本例中,我得到:
<textarea>Dear John, this is the list of your products: {others}</textarea>
当我单击提交按钮时,我想检查我的文本区域中是否还有一些占位符。 (在我的情况下,{others}
不存在)。在这种情况下,我想在JavaScript / jQuery中显示警报:
alert("There are still placeholder in your text. Retry again");
我的最后一个问题是:如何用jQuery和{和}分隔文本,但是我不知道其中确切的文本呢?
$(document).ready(function(){
$("#submit-button").on("click", function(e) {
e.preventDefault();
var text = $("textarea").val();
if ( //here the check ) {
return false;
}
});
});
答案 0 :(得分:2)
要实现此目的,您可以使用正则表达式来查找{}
中包含的所有值:
$('textarea').each(function() {
var hasTags = /\{.*\}/gi.test($(this).text());
console.log(hasTags);
});
textarea { width: 100%; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea>Lorem ipsum {dolor} sit amet consectetur adipiscing {elit}</textarea>
<textarea>Lorem ipsum dolor sit amet consectetur adipiscing elit</textarea>
请注意,这是一个贪婪的匹配,因此,如果在文本区域的任何点上有一个{
后跟一个}
,它将通过该测试。
答案 1 :(得分:0)
您可以按以下方式使用正则表达式
const regex = /\{.*?\}/gm;
let matches;
if((matches = regex.exec(text)) !== null) {
//do whatever you want
}