[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Простая задача выборки ф-й preg_match_all
Xes
Ребята давно не практиковался, подскажите пожалуйста.
Нужно вытащить массивом ссылку и анкер ссылки. То что я обозначил (.*)
У меня на выходе массив пустой.

$text=file_get_contents('file1.php');
$pattern = '|<div class="label"><a href="(.*)" onclick="return nav.go(this, event);">(.*)</a></div>|i';
preg_match_all($pattern, $text, $out);
print_r($out);
Игорь_Vasinsky
<?php

$str = '<a href="asdasdasdasd" onclick="return nav.go(this, event);">123123123</a>';

$pattern = '#href="([^"].*)".*?>([^<].*)</a>#U';
preg_match_all($pattern, $str, $out);
print_r($out);


Array
(
[0] => Array
(
[0] => href="asdasdasdasd" onclick="return nav.go(this, event);">123123123</a>
)

[1] => Array
(
[0] => asdasdasdasd
)

[2] => Array
(
[0] => 123123123
)

)


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Xes
Игорь спасибо, да скрипт выдает данные но из за того что у меня сложный текст много ссылок, на выходе много мусора.
Поэтому я написал шаблон в котором меня интересуют только ссылки внутри блока div определенного класса и в самой ссылке тоже определенные слова типа onclick="return nav.go(this, event);"
Тоесть ето хоть можен не совсем гибкий но однозначно определяющий шаблон, под маю микро задачу достаточно.

Что не так в этом шаблоне?

Вот кусок текста где 4 элемента многомерного масива должно получится, но масив пустой

$text='<div class="label"><a href="111" onclick="return nav.go(this, event);">qqqq</a></div> 
ТУТ ЕЩЕ КУЧА ТЕКСТА С СЫЛКАМИ<div class="label"><a href="2222" onclick="return nav.go(this, event);">
wwwwwww</a></div>
sdlksdjlk <div class="label"><a href="333333" onclick="return nav.go(this, event);">eeeee</a></div>
nnnnnnndkdkkd <div class="label"><a href="333333" onclick="return nav.go(this, event);">eeeee</a></div>'
;

$pattern = '|<div class="label"><a href="(.*)" onclick="return nav.go(this, event);">(.*)</a></div>|iU';
preg_match_all($pattern, $text, $out);
print_r($out);


Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) ) 
Игорь_Vasinsky
вот я взял твою переменную $text

$str='<div class="label"><a href="111" onclick="return nav.go(this, event);">qqqq</a></div> jsjkdlksdj <div class="label"><a href="2222" onclick="return nav.go(this, event);">
wwwwwww</a></div>
sdlksdjlk <div class="label"><a href="333333" onclick="return nav.go(this, event);">eeeee</a></div>
nnnnnnndkdkkd <div class="label"><a href="333333" onclick="return nav.go(this, event);">eeeee</a></div>'
;

$pattern = '#href="([^"].*)".*?>([^<].*)</a>#U';
preg_match_all($pattern, $str, $out);
print_r($out);


Array
(
[0] => Array
(
[0] => href="111" onclick="return nav.go(this, event);">qqqq</a>
[1] => href="333333" onclick="return nav.go(this, event);">eeeee</a>
[2] => href="333333" onclick="return nav.go(this, event);">eeeee</a>
)

[1] => Array
(
[0] => 111
[1] => 333333
[2] => 333333
)

[2] => Array
(
[0] => qqqq
[1] => eeeee
[2] => eeeee
)

)


не пойму, что не так ?
в 0 индексе мусор - в 1 ссылки в 2 анкера

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
дай исходный текст чтоли. я не правлю чужие паттерны. мне быстрее написать свой)

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Xes
Игорь, полностью код.
Во-первых у меня почему-то на выходе два раза href="333333" onclick="return nav.go(this, event);">eeeee
и отсутвует
a href="2222" onclick="return nav.go(this, event);">
wwwwwww
Во-вторых вот в тексте ссылка которая находиться в блоке <div class="musor"><a href="Ссылка мусорная" onclick="return nav.go(this, event);">Анкер Мусорный</a></div> она тоже попадает в выдачу.
Мне нужны данныйе только из блоков соответвующих шаблону

<div class="label"><a href="(.*)" onclick="return nav.go(this, event);">(.*)</a></div>

<?php
error_reporting(E_ALL);
header('Content-type: text/html; charset=utf-8');
echo 'Start';
$str='<div class="label"><a href="111" onclick="return nav.go(this, event);">qqqq</a></div>
jsjkdlksdj <div class="label"><a href="2222" onclick="return nav.go(this, event);">
wwwwwww</a></div>
sdlksdjlk <div class="label"><a href="333333" onclick="return nav.go(this, event);">eeeee</a></div>
nnnnnnndkdkkd <div class="label"><a href="333333" onclick="return nav.go(this, event);">eeeee</a></div>
еще текст <div class="musor"><a href="Ссылка мусорная" onclick="return nav.go(this, event);">Анкер Мусорный</a></div>'
;

$pattern = '#href="([^"].*)".*?>([^<].*)</a>#U';
preg_match_all($pattern, $str, $out);
print_r($out);
?>



StartArray ( [0] => Array ( [0] => href="111" onclick="return nav.go(this, event);">qqqq [1] => href="333333" onclick="return nav.go(this, event);">eeeee [2] => href="333333" onclick="return nav.go(this, event);">eeeee [3] => href="Ссылка мусорная" onclick="return nav.go(this, event);">Анкер Мусорный ) [1] => Array ( [0] => 111 [1] => 333333 [2] => 333333 [3] => Ссылка мусорная ) [2] => Array ( [0] => qqqq [1] => eeeee [2] => eeeee [3] => Анкер Мусорный ) )
Игорь_Vasinsky
так чтоли?
<?php

$str='<div class="label"><a href="111" onclick="return nav.go(this, event);">qqqq</a></div> jsjkdlksdj <div class="label"><a href="2222" onclick="return nav.go(this, event);">
wwwwwww</a></div>
sdlksdjlk <div class="label"><a href="333333" onclick="return nav.go(this, event);">eeeee</a></div>
nnnnnnndkdkkd <div class="label"><a href="333333" onclick="return nav.go(this, event);">eeeee</a></div>
nnnnnnndkdkkd <div class="musor"><a href="333333" onclick="return nav.go(this, event);">eeeee</a></div>'
;

$pattern = '#<div class="label"><a href="([^"].*)".*?>([^<].*)</a></div>#U';
preg_match_all($pattern, $str, $out);
print_r($out);


Array
(
[0] => Array
(
[0] => <div class="label"><a href="111" onclick="return nav.go(this, event);">qqqq</a></div>
[1] => <div class="label"><a href="333333" onclick="return nav.go(this, event);">eeeee</a></div>
[2] => <div class="label"><a href="333333" onclick="return nav.go(this, event);">eeeee</a></div>
)

[1] => Array
(
[0] => 111
[1] => 333333
[2] => 333333
)

[2] => Array
(
[0] => qqqq
[1] => eeeee
[2] => eeeee
)

)



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Xes
Да спасибо получилось.
Игорь_Vasinsky
))

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.