1

正規表現を使用して、「ソフトウェア」とその値「2」の情報情報を抽出したいと考えています。PHP で以下の文字列を調べてください。

$str = "http://abcfastdirectory.com vs http://www.weblinkstoday.com/detail/link-116406.htm ::-(1)**abcfastdirectory(1)**allows(1)**create(1)**directories(1)**professional(1)**((1)**abcfastdirectory(1)**allows(1)**club(1)**contact(1)**create(2)**details(1)**directories(4)**directory(3)**for(3)**it(1)**our(1)**page(1)**professional(2)**software(2)**"

PHPで正規表現を使用して上記の文字列から情報を抽出するにはどうすればよいですか?

4

4 に答える 4

3

"software(2)" のみを使用している場合は、次のようにする必要があります。

preg_match('/software\((?<value>\d+)\)/', $str, $m);
print $m['value'];

ただし、好きなすべての部分を一致させたい場合<word>(<num>)は、次を使用できます。

preg_match_all('/(?<key>\w+)\((?<value>\d+)\)/i', $str, $m);
foreach ($m['key'] as $i => $key) {
     print $key.' => '.$m['value'][$i]."\n";
}
于 2012-08-03T18:44:59.067 に答える
0

これを試して、探しているものである場合は結果を確認できます。

<?php

$str = "http://abcfastdirectory.com vs http://www.weblinkstoday.com/detail/link-116406.htm ::-(1)**abcfastdirectory(1)**allows(1)**create(1)**directories(1)**professional(1)**((1)**abcfastdirectory(1)**allows(1)**club(1)**contact(1)**create(2)**details(1)**directories(4)**directory(3)**for(3)**it(1)**our(1)**page(1)**professional(2)**software(2)**";

$matches = array();

preg_match_all('#\*\*(.*?)\((\d+)\)\*\*#',$str,$matches, PREG_SET_ORDER );

print_r($matches);
于 2012-08-03T19:00:04.497 に答える
0
$software = (int)preg_replace('/.*software\((\d+)\).*/','$1',$str);
于 2012-08-03T18:44:24.427 に答える
0

これを試して:

$pattern = '/\*\*software\([0-9]+\)\*\*/';
preg_match($pattern, $str, $matches);

// your value will be stored in $matches[1] 
于 2012-08-03T18:45:02.670 に答える