0

运行以下代码

$mysqlquery = "SELECT `description` FROM `table`";

$sqlresourceid = mysql_query($mysqlquery);
$subject = mysql_fetch_row($sqlresourceid);
$regexisbn = '/(97(8|9))?\d{9}(\d|X)/i';

$pattern = '/.*/i';

$matches  = preg_grep ($regexisbn, $subject);

var_dump($matches);

但是这会返回以下内容

ISBN10: 0470945176 by Paul D. Kimmel Publisher: John Wiley & Sons Copyright year: © 2011

我只是想让它返回 ISBN 0470945176 ,这是怎么回事?

4

2 回答 2

0

如果您只需要获取正则表达式的匹配部分,请尝试以下操作:

$str = 'ISBN10: 0470945176 by Paul D. Kimmel Publisher: John Wiley & Sons Copyright year: © 2011';
preg_match('/(?P<my_isbn>(97(8|9))?\d{9}(\d|X))/i', $str, $matches);
echo 'ISBN: <b>' . $matches['my_isbn'] . '</b>';

你的结果是:

国际标准书号:0470945176

于 2013-09-12T20:19:21.137 回答
0

因为这就是这样preg_grep做的:它过滤输入数组,删除不匹配的条目。然后匹配的条目保持不变。

你想试试preg_matchpreg_replace

于 2013-09-12T19:17:43.240 回答