用于字符串的PHP正则表达式preg_match_all

时间:2011-04-12 20:57:22

标签: php regex

我有以下字符串:

关键字|标题| HTTP://example.com/

我想使用PHP函数

preg_match_all ( $anchor, $key, $matches, PREG_SET_ORDER) )

目前

$anchor='/([\w\W]*?)\|([\w\W]*)/';

我得到$ matches数组:

Array
(
    [0] => Array
        (
            [0] => keyword|title|http://example.com/
            [1] => keyword
            [2] => title|http://example.com/
        )

)

我想得到

matches[1]=keyword
matches[2]=title
matches[3]=http://example.com

我如何修改$ anchor来实现这个目标?

2 个答案:

答案 0 :(得分:6)

最简单的方法是使用explode()而不是正则表达式:

$parts = explode('|', $str);

假设没有任何部分可以包含|。但如果可以的话,正则表达式对你也无济于事。

答案 1 :(得分:1)

如果你想继续使用正则表达式来避免手动循环,那么我建议使用这个语法并使用[\w\W]*语法并提供可读性:

$anchor = '/([^|]*) \| ([^|]*) \| ([^\s|]+)/x';

使用显式否定字符类会更加健壮。 (我假设标题和网址都不能包含|。)