0

如果它们在 () 之间,我如何回显它们,这是我的示例:

<?php
$text = "(test1) ignore this right here (test2) ignore (test3)";
Echo get_texts_between("()",$text);
?>

输出应该是:test1 test2 test3

4

2 回答 2

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-z0-9(). 这将与您的例句相匹配。如果您只匹配例如 4 个字母和 1 个数字,或者当组内可能有其他字符时,您必须添加更多示例,说明您希望在 OP 中完全匹配的内容。

于 2012-08-05T14:59:22.843 回答
2

您可以preg_replace用一个空格替换您不感兴趣的部分 ( ):

echo preg_replace('~^\(|\)[^\(]*\(|\)$~', ' ', $text);

这是用正则表达式匹配字符串开头的单个左括号、字符串^\(中的右括号和左括号部分\)[^\(]*\(或字符串末尾的单个右括号\)$

如果您不需要尾部斜杠,请添加一个简单的斜杠trim。或者还有preg_split

echo implode(' ', preg_split('~^\(|\)[^\(]*\(|\)$~', $text, -1, PREG_SPLIT_NO_EMPTY));

但我想说的是,它在一行中变得有点复杂。顺便说一句,模式是一样的。

于 2012-08-05T15:13:45.587 回答