join
- это метод для массивов, но urls
- это строка, а не массив.
Вы должны вставить строку в массив и вызвать join
в конце.
И если вы хотите, чтобы они имели =
, вам также нужно объединить это.
var substr = [1, 2, 3, 4, 5, 6];
var urls = [];
for (var i = 0; i < substr.length; i++) {
urls.push('url' + substr[i] + '=');
}
var joinArr = urls.join('&');
console.log("JoinArray", joinArr);
$string = "this (is (a) test) with (two parenthesis) duh";
Для такой строки вы можете использовать preg_match_all и использовать implode.
$string = "this (is (a) test) with (two parenthesis) duh";
$regex = '#\((([^()]+|(?R))*)\)#';
if (preg_match_all($regex, $string ,$matches)) {
echo implode(' ', $matches[1]);
} else {
//no parenthesis
echo $string;
}
Или вы можете использовать preg_replace, но с множественные скобки, вы потеряете пробел между ними.
$regex = '#[^()]*\((([^()]+|(?R))*)\)[^()]*#';
$replacement = '\1';
echo preg_replace($regex, $replacement, $string);
Я получил большую помощь от этой страницы, Более тонкие моменты регулярных выражений PHP .
$matches = array();
$num_matched = preg_match_all('/\((.*)\)/U', $input, $matches);
Самый простой способ будет с регулярным выражением:
preg_match_all('/\((.*?)\)/', $input, $matches);
$ соответствует [1]
, $ match [2]
и т. д. будет содержать все, что было в скобках в $ input. То есть $ match [1]
будет иметь то, что было между первым набором скобок и т. Д. (Для обработки случаев с несколькими наборами).