在括号内获取单词

时间:2012-08-05 14:54:14

标签: php

如果它们位于()之间,我如何回应单词,这是我的例子:

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

输出应该是: test1 test2 test3

2 个答案:

答案 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相同。