PHP: как получить только слова между круглой скобкой () и очистить все остальное

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);

6
задан JakeGould 29 May 2014 в 03:11
поделиться

3 ответа

$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 .

8
ответ дан 8 December 2019 в 05:57
поделиться
$matches = array();
$num_matched = preg_match_all('/\((.*)\)/U', $input, $matches);
1
ответ дан 8 December 2019 в 05:57
поделиться

Самый простой способ будет с регулярным выражением:

preg_match_all('/\((.*?)\)/', $input, $matches);

$ соответствует [1] , $ match [2] и т. д. будет содержать все, что было в скобках в $ input. То есть $ match [1] будет иметь то, что было между первым набором скобок и т. Д. (Для обработки случаев с несколькими наборами).

12
ответ дан 8 December 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: