字符串的PHP正则表达式preg_match_all
我有以下字符串: 关键字|标题|http://example.com/ 我想使用PHP函数字符串的PHP正则表达式preg_match_all,php,regex,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.
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以实现此目的?最简单的方法是使用正则表达式代替:
$parts = explode('|', $str);
假设所有零件都不能包含
|
。但是如果可以的话,regex也不会对您有多大帮助。如果您想继续使用regex来避免手动循环,那么我建议您使用它,而不是使用[\w\w]*
语法,并且为了可读性:
$anchor = '/([^|]*) \| ([^|]*) \| ([^\s|]+)/x';
使用显式的否定字符类会更健壮一些。(我假设标题和url都不能包含
|
。绝对可以。只是为了它。。。这里有一个可以工作的正则表达式:/([^ |]+)/
Gary,如果我使用这个正则表达式,这是匹配的:数组([0]=>Array([0]=>keyword[1]=>keyword)[1]=>Array([0]=>title[1]=>title)[2]=>Array([0]=>1]=>))您只需在正则表达式中再添加一个\\124;([\ w\w]*?)
。谢谢,这很有效。最后一个表达式:$anchor='/([\w\w]*?)\\\\\\;([\w\w]*?)\\\\\\\\\;([\w\w]*)/;嘿,马里奥,谢谢你,这起作用了。我对正则表达式一无所知;在我看来,他们像是胡言乱语。我在哪里可以找到这些表达式的规则和机制?谢谢,是的。它们有点像是自己的编程语言。习惯它们需要时间。提供了一个基本可以理解的介绍。下面是一些有时可以帮助构造正则表达式的工具: