如果它们在 () 之间,我如何回显它们,这是我的示例:
<?php
$text = "(test1) ignore this right here (test2) ignore (test3)";
Echo get_texts_between("()",$text);
?>
输出应该是:test1 test2 test3
如果它们在 () 之间,我如何回显它们,这是我的示例:
<?php
$text = "(test1) ignore this right here (test2) ignore (test3)";
Echo get_texts_between("()",$text);
?>
输出应该是:test1 test2 test3
您可以为此使用 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 中完全匹配的内容。
您可以preg_replace
用一个空格替换您不感兴趣的部分 ( ):
echo preg_replace('~^\(|\)[^\(]*\(|\)$~', ' ', $text);
这是用正则表达式匹配字符串开头的单个左括号、字符串^\(
中的右括号和左括号部分\)[^\(]*\(
或字符串末尾的单个右括号\)$
。
如果您不需要尾部斜杠,请添加一个简单的斜杠trim
。或者还有preg_split
:
echo implode(' ', preg_split('~^\(|\)[^\(]*\(|\)$~', $text, -1, PREG_SPLIT_NO_EMPTY));
但我想说的是,它在一行中变得有点复杂。顺便说一句,模式是一样的。