PDA

View Full Version : preg_match_all



saeidkhphp
شنبه 02 اسفند 1393, 00:48 صبح
سلام دوستان ، ببخشید من امروز خیلی مزاحمتون شدم با کمک دوستان کارایی کردم و پروژه م این بود که تمامی لینک هایی که داخل یک URL وجود داره توسط PHP خونده بشه ، به این کد رسیدم :

<title>Untitled Document</title></head>
<?php
$filename = "C:\\wamp\\www\\varzesh3.txt";
$html =fread($filename,"a");
preg_match_all("|<[^>]+>(.*)</[^>]+>|U", $html , $out , PREG_SET_ORDER);
echo $out[0];
?>
<body></body></html>

البته فرمت اصلیش رو از سایت php درآوردم که باید به این شکل باشه :

<?php
// The \\2 is an example of backreferencing. This tells pcre that
// it must match the second set of parentheses in the regular expression
// itself, which would be the ([\w]+) in this case. The extra backslash is
// required because the string is in double quotes.
$html = "<b>bold text</b><a href=howdy.html>click me</a>";

preg_match_all("/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);

foreach ($matches as $val) {
echo "matched: " . $val[0] . "\n";
echo "part 1: " . $val[1] . "\n";
echo "part 2: " . $val[2] . "\n";
echo "part 3: " . $val[3] . "\n";
echo "part 4: " . $val[4] . "\n\n";
}
?>
و زیرش اینو نوشت :


The above example will output:matched: <b>bold text</b>
part 1: <b>
part 2: b
part 3: bold text
part 4: </b>

matched: <a href=howdy.html>click me</a>
part 1: <a href=howdy.html>
part 2: a
part 3: click me part 4: </a>

فرمت کلی هم اینه :

int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags =PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

سوال اصلیم اینه که من جای اون pattern و subject و matches و offset چی بذارم ؟
تو مثالی که من گذاشتم همش ارور میده : Warning: fread() expects parameter 1 to be resource, string given in C:\wamp\www\vvv.php on line 9
و این Notice: Undefined offset: 0 in C:\wamp\www\vvv.php on line 11

من میخام لینک ها و URL هایی که داخل اون صفحه هست رو جستجو کنه ، طبیعتا باید در پترن عباراتی مثل >a herf یا حتا .com و شبیه اینا رو نوشت ، نه این پترن های این شکلی که |<[^>]+>(.*)</[^>]+>|U که خودشون گذاشتن برا مثال

ممنون از همتون

saeidkhphp
شنبه 02 اسفند 1393, 10:57 صبح
عزیزان یکی نیست جواب منو بده * خواهش میکنم ازتون