-1

我使用 preg_match() 检查来自 XML 提要的字符串(即:$resp = simplexml_load_file($API);),它返回超过 1000 个项目,并且使用 preg_match 我从每个项目中提取了一些数据存储在 $matches 中,但我不知道如何使用 preg_match 存储在 $matches 中的内容

这就是我所拥有的以及我尝试过的。

注意:我有 print_r($matches); 这样我就可以在修改 preg 模式时看到结果。

    $matches;

        preg_match('/(?<=\s|^)[a-zA-Z]{5,19} ?-?\d\d\d\d\d\d\d\d?*(?=\s|$)/', $Apples, $matches);

            print_r($matches);

/*Note: $matches returns an array as such: Array ( [0] => Stringdata ) Array ( [0] => moreStringdata ) Array ( [0] => stillmoreStringData ) Array ( [0] => evenmoreStringData ) Array ( [0] => moreStringDataStill )... and I'm just wanting to use array[0] from each in the $results string which is output to the screen */  

    $results.= "<div class='MyClass'><a href=\"$link\"><img src=\"$linktopicture\"></a><a href=\"$linktopageaboutapples\">$matches</a></div>";

我还在 $results 字符串中尝试了 $matches()、$matches[] 和 $matches[0],但没有任何效果,因为我对使用数组不太了解,所以我想我会问,如果有人不介意让我直接了解可能非常初级的内容,我将不胜感激,我提前感谢大家。

4

1 回答 1

0

请务必阅读preg_match 文档页面以了解该功能的工作方式。

首先,检查 preg_match 是否返回1(表示 in 的值$Apples与模式匹配)或0(表示$Apples与模式不匹配)或FALSE(表示发生错误)。

假设1返回,则 $matches[0] 将包含与模式匹配的 $Apples 字符串的整个部分。如果您有捕获组,那么属于第一个捕获组的匹配部分将在 $matches[1] 中找到,在 $matches[2] 中找到第二个,依此类推。

如果您无法共享您的正则表达式模式,则无法查看您的模式是否包含任何捕获组,因此让我们使用以下示例:

preg_match("/key:([A-Z]+);value:([0-9]+)/", "key:ERRORCODE;value:500", $matches);

现在$matches[0]应该包含“key:ERRORCODE;value:500”,因为整个字符串与模式匹配,并且$matches[1]应该包含“ERRORCODE”,并且$matches[2]应该包含“500”,因为这些部分适合完整模式的捕获组中的模式。

于 2013-11-09T20:02:10.997 回答