Я хотел бы использовать функцию preg_match, чтобы сделать это, поскольку то, что вы хотите, является довольно простым выражением.
$matches = array();
$result = preg_match("/^(.{1,199})[\s]/i", $text, $matches);
Выражение означает «соответствовать любой подстроке, начиная с начала длины 1-200, что заканчивается пробелом ». Результат получается в $ result, а совпадение - в $ match. Это позаботится о вашем первоначальном вопросе, который определенно заканчивается на любом пространстве. Если вы хотите, чтобы он заканчивался на символах новой строки, измените регулярное выражение на:
$result = preg_match("/^(.{1,199})[\n]/i", $text, $matches);
Вы можете объявить глобальные переменные , используя глобальный объект NodeJS. Но в вашем случае вы хотите, чтобы k было 1, а это 0. Поскольку NodeJS является асинхронным , вы должны console.log (k) внутри обратного вызова.
Когда вы запускаете эту программу, console.log (k) и console.log (error) выполняется до того, как функция check1
возвращает значение в обратный вызов. Это асинхронный процесс. так что вы получаете k как 0. Чтобы решить эту проблему, вы должны console.log внутри обратного вызова
var k = 0;
var error = "error";
const { teamname, event_name, inputcount, name, roll } = req.body;
function check1(teamname, event_name, callback) {
Register.find({ teamname: teamname, eventname: event_name }, (err, docs) => {
callback(docs.length)
});
}
check1(teamname, event_name, function (e) {
if (e != 0) {
console.log("executed");
k = 1
}
console.log(k) // prints 0 or 1
console.log(error) // prints "error"
});