我怎麼迴應的話,如果他們(間),這裏是我的例子:獲取話括號內
<?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));
但它有點複雜在一行我會說。模式是相同的順便說一句。
除了()之外還有其他的東西嗎?像點或逗號一樣? – arnoudhgz 2012-08-05 15:13:25