使用PHP操作字符串

时间:2013-10-03 01:05:54

标签: php

在PHP中,我有这样的字符串:

$string = "This is a 123 test (your) string (for example 1234) to test.";

从那个字符串中,我想用数字来获取()中的单词。我尝试过使用爆炸,但由于我在括号中有两个单词/一组字符串,我最终得到(你的)而不是(例如1234)。我也像这样使用substr:

substr($string, -20)

这大部分时间都有效,但问题是,有些情况下字符串较短,因此最终会得到不需要的字符串。我也试过使用正则表达式,我设置了这样的东西:

/[^for]/

但这也不起作用。我想要获得的字符串始终以"开头#"但长度各不相同。我如何操纵php,以便我只能获得以括号开头的括号内的字符串?

4 个答案:

答案 0 :(得分:3)

在这种情况下,我可能会使用preg_match()。

preg_match("#\((for.*?)\)#",$string,$matches);

找到的任何匹配项都会存储在$ matches中。

答案 1 :(得分:2)

使用以下正则表达式:

(\(for.*?\))

它将捕获如下的模式:

(for)
(foremost)
(for example)
(for 1)
(for: 1000)

示例PHP代码:

$pattern = '/(\(for.*?\))/';
$result  = preg_match_all( 
    $pattern, 
    " text (for example 1000) words (for: 20) other words",
    $matches 
);

if ( $result > 0 ) {
    print_r( $matches );
}


高于print_r( $matches )结果:

Array
(
    [0] => Array
        (
            [0] => (for example 1000)
            [1] => (for: 20)
        )

    [1] => Array
        (
            [0] => (for example 1000)
            [1] => (for: 20)
        )
)

答案 2 :(得分:1)

preg_match用于正则表达式

$matches = array();
$pattern = '/^for/i';
preg_match($pattern,$string,$matches);
pirnt_r($matches);

如果提供了matches,则会填充搜索结果。 $matches[0]将包含与完整模式匹配的文本,$matches[1]将具有与第一个捕获的带括号的子模式匹配的文本,依此类推。

答案 3 :(得分:0)

$matches = array(); 
preg_match("/(\(for[\w\d\s]+\))/i",$string,$matches);
var_dump($matches);