我正在尝试匹配XML而不是超链接的文本,并将其列为超链接。但它只显示为数组..我做错了什么?感谢
<?php
$content = file_get_contents('http://phobos.apple.com/version');
$download = preg_match_all('~(.*)/iPhone/(.*)Restore.ipsw~', $content, $matches);
echo $matches[0];
?>
要转换为链接的示例文本 http://appldnld.apple.com/iPhone4/061-7939.20100908.Lcyg3/iPhone3,1_4.1_8B117_Restore.ipsw
如果匹配应列如下
答案 0 :(得分:0)
$matches
不是数组,而是数组数组:
匹配
根据标志排序的多维数组中所有匹配的数组。
默认flags
参数为PREG_PATTERN_ORDER
:
对结果进行排序,以便$ matches [0]是一个完整模式的数组 匹配,$ matches [1]是由第一个匹配的字符串数组 带括号的子模式,依此类推。
因此,$matches[0]
是符合正则表达式的字符串的数组,$matches[1]
是与{{1}对应的子字符串的数组和\1
是与$matches[2]
对应的子串的数组。 E.g:
\2
因此,php >print_r($matches[2]);
Array
(
[0] => 061-4313.20080226.Sw39i/iPhone1,1_1.1.4_4A102_
[1] => 061-4313.20080226.Sw39i/iPhone1,1_1.1.4_4A102_
[2] => 061-4313.20080226.Sw39i/iPhone1,1_1.1.4_4A102_
[3] => 061-4313.20080226.Sw39i/iPhone1,1_1.1.4_4A102_
... etc etc
)
指的是 ith 匹配的第j 个捕获组。 ($matches[j][i]
是整个匹配字符串)。
答案 1 :(得分:0)
谢谢..所以我编码
<?php
$content = file_get_contents('http://phobos.apple.com/version');
$download = preg_match_all('~(.*)/iP(.*)Restore.ipsw~', $content, $matches, PREG_PATTERN_ORDER);
echo "Key: <br>";
print_r($matches[0]);
echo "<p>URL: <br>";
print_r($matches[1]);
?>
虽然我需要将Text转换为Link我用一些教程
编码<?php
$content = file_get_contents('http://phobos.apple.com/version');
$matches = "~(.*)/iP(.*)Restore.ipsw~";
if(preg_match($matches, $content, $url)) {
echo preg_replace($matches, '<a href="'.$url[0].'" rel="nofollow">'.$url[0].'</a>', $matches);
}
?>
问题在于将文本转换为链接,它只显示1个超链接,其余部分不会显示。 http://codepad.org/v4YFfS7i