Возможно, это немного сложнее, но вы можете использовать веб-сервер для маршрутизации запроса. С nodejs вы не имеете этой проблемы. Я не эксперт в узле js. Поэтому я не знаю, является ли это чистым кодом.
Но это работает для меня
Вот немного примера:
NODE JS
var rp = require('request-promise');
var express = require('express'),
app = express(),
port = process.env.PORT || 3000;
var options = {
method: 'POST',
uri: 'http://api.posttestserver.com/post',
body: {
some: 'payload'
},
json: true // Automatically stringifies the body to JSON
};
app.get('/', function (req, res) {
rp(options)
.then(function (parsedBody) {
res.send(parsedBody)
})
.catch(function (err) {
res.send(err)
});
});
app.listen(port);
JS
axios.get("http://localhost:3000/").then((res)=>{
console.log('================res====================');
console.log(res);
console.log('====================================');
})
Вы можете использовать это регулярное выражение:
$s = '"apple google" AND bing NOT yahoo "word a-b"';
$r = preg_replace('/(?=(([^"]*"){2})*[^"]*$)(?<!AND|NOT|OR) +(?!-|AND|NOT|OR)/i',
' ## ', $s);
echo "$r"; // "apple google" AND bing NOT yahoo ## "word a-b"
Это предполагает, что кавычки сбалансированы на входе, поскольку он обнаруживает текст внутри кавычек, подсчитывая даже число кавычек, следующих в lookahead.
Это работает для вас?
(?<!AND|NOT|OR")[ ](?!-|AND|NOT|OR|[a-zA-Z]+")
Edit
У меня было другое мнение, и это должно работать:
(?<!AND|NOT|OR)[ ](?!-|AND|NOT|OR|(([a-zA-Z])\s?)+[a-zA-Z]")
Изменить 2 Для слов с дефисами в
(?<!AND|NOT|OR)[ ](?!-|AND|NOT|OR|(([a-zA-Z-])\s?)+[a-zA-Z]")
Редактировать 3
См. ответ anubhava для более удобного подхода:)