如果它们位于()之间,我如何回应单词,这是我的例子:
<?php
$text = "(test1) ignore this right here (test2) ignore (test3)";
Echo get_texts_between("()",$text);
?>
输出应该是: test1 test2 test3
答案 0 :(得分:2)
你可以使用preg_match:
$text = "(test1) ignore this right here (test2) ignore (test3)";
$pattern = '/\(([a-z0-9]+)\)/';
preg_match_all($pattern, $text, $matches);
echo implode(' ', $matches[1]);
请注意,这仅与a-z
中的0-9
和()
匹配。哪个会匹配你的例句。如果你只匹配例如4个字母和1个数字,或者当组中可能有其他字符时,您将需要添加更多关于您希望在OP中匹配的内容的示例。
答案 1 :(得分:2)
您可以使用单个空格替换您不感兴趣的部分(preg_replace
):
echo preg_replace('~^\(|\)[^\(]*\(|\)$~', ' ', $text);
这是一个正则表达式,匹配字符串^\(
开头的单个开括号,字符串\)[^\(]*\(
中的close和open括号部分或者结束时的单个结束括号。字符串\)$
。
如果您不需要尾部斜杠,请为其添加简单的trim
。另外,还有preg_split
:
echo implode(' ', preg_split('~^\(|\)[^\(]*\(|\)$~', $text, -1, PREG_SPLIT_NO_EMPTY));
但是我说的一行中有点复杂。模式与btw相同。