#php
#php
Вопрос:
У меня много ссылок:
http://exmpale.com/abc/exmpale.html
http://exmpale.com/abc/exmpale1.html
http://exmpale.com/abc/exmpale2.html
http://exmpale.com/abc/exmpale/exmpale1.html
http://exmpale.com/abc/exmpale/exmpale2.html
http://exmpale.com/abc/exmpale/exmpale3.html
http://exmpale.com/abcd/exmpale1.html
http://exmpale.com/abcd/exmpale2.html
http://exmpale.com/abcd/exmpale2.html
http://exmpale.com/abcd/exmpale4.html
http://exmpale.com/abc/abc/exmpale1.html
http://exmpale.com/abc/abc/exmpale2.html
http://exmpale.com/abc/abc/exmpale3.html
http://exmpale.com/abc/abc/exmpale4.html
http://exmpale.com/abc/abc/exmpale5.html
Я использую php, я хочу получить все ссылки, которые нравятся http://exmpale.com/abc/(*).html
, и перечислить их в массиве.
Извините, я забыл код. мой код
$a = array(
0 => 'http://exmpale.com/abc/exmpale.html',
1 => 'http://exmpale.com/abc/exmpale1.html',
2 => 'http://exmpale.com/abc/exmpale2.html',
3 => 'http://exmpale.com/abc/exmpale/exmpale1.html',
4 => 'http://exmpale.com/abc/exmpale/exmpale2.html',
5 => 'http://exmpale.com/abc/exmpale/exmpale3.html',
6 => 'http://exmpale.com/abcd/exmpale1.html',
7 => 'http://exmpale.com/abcd/exmpale2.html',
8 => 'http://exmpale.com/abcd/exmpale2.html',
9 => 'http://exmpale.com/abcd/exmpale4.html',
10 => 'http://exmpale.com/abc/abc/exmpale1.html',
11 => 'http://exmpale.com/abc/abc/exmpale2.html',
12 => 'http://exmpale.com/abc/abc/exmpale3.html',
13 => 'http://exmpale.com/abc/abc/exmpale4.html',
14 => 'http://exmpale.com/abc/abc/exmpale5.html',
);
foreach($a as $k => $v ){
$abc = preg_match_all('/http://exmpale.com/abc/(.*?).html/',$v,$b);
print_r($b[1]);
}
и я хочу получить результат.
$result = array(
'http://exmpale.com/abc/exmpale.html',
'http://exmpale.com/abc/exmpale1.html',
'http://exmpale.com/abc/exmpale2.html');
но это заняло весь результат, пожалуйста, помогите мне
, спасибо вам.
Комментарии:
1. Я предлагаю вам взглянуть на циклы и функции подстроки. Начните изучать документацию, начните использовать Google для этого. Затем запустите свой собственный скрипт, попробуйте решить это самостоятельно. Затем , если вы столкнулись с конкретной проблемой с вашим собственным кодом, тогда самое время задать вопрос здесь и опубликовать свой код внутри вопроса. Мы здесь не для того, чтобы делать вашу работу за вас. Мы здесь, чтобы помочь вам с выполнением вашей работы.
2. извините, я не знаю свой код
Ответ №1:
Просто используйте функцию php preg_match_all, и соответствующая строка будет загружена в массив, который вы предоставляете вышеупомянутой функции в качестве аргумента. Пожалуйста, прочитайте руководство по PHP на preg_match_all и создайте регулярное выражение для ваших нужд. Вы можете проверить свое регулярное выражение здесь
Комментарии:
1. я использую функцию preg_match_all, но результат не нравится
Ответ №2:
Поскольку вы не указываете, в какой структуре данных хранятся URL-адреса, я предполагаю, что это необработанная строка:
$data_raw = "http://exmpale.com/abc/exmpale.html
http://exmpale.com/abc/exmpale1.html
http://exmpale.com/abc/exmpale2.html
http://exmpale.com/abc/exmpale/exmpale1.html
http://exmpale.com/abc/exmpale/exmpale2.html
http://exmpale.com/abc/exmpale/exmpale3.html
http://exmpale.com/abcd/exmpale1.html
http://exmpale.com/abcd/exmpale2.html
http://exmpale.com/abcd/exmpale2.html
http://exmpale.com/abcd/exmpale4.html
http://exmpale.com/abc/abc/exmpale1.html
http://exmpale.com/abc/abc/exmpale2.html
http://exmpale.com/abc/abc/exmpale3.html
http://exmpale.com/abc/abc/exmpale4.html
http://exmpale.com/abc/abc/exmpale5.html";
$urls = explode("n", $data_raw);
$accept_host = "exmpale.com";
$accept_path = "/abc/";
$filtered_urls = array_filter($urls, function($url) use($accept_host, $accept_path) {
$parts = parse_url($url);
return $parts['host'] == $accept_host
amp;amp; strpos($parts['path'], $accept_path) === 0
amp;amp; strpos($parts['path'], '/', strlen($accept_path)) === false;
});
printf("<pre>%s</pre>", print_r($filtered_urls, true));
Выдает:
Array
(
[0] => http://exmpale.com/abc/exmpale.html
[1] => http://exmpale.com/abc/exmpale1.html
[2] => http://exmpale.com/abc/exmpale2.html
)
Комментарии:
1. спасибо вам. но данные в строке, и я хочу получить результат exmpale.com/abc/exmpale.html ,http://exmpale.com/abc /… и exmpale.com/abc/exmpale2.html
2. Я понимаю, что вы хотите, чтобы каждый URL-адрес разделялся запятой. Взгляните на обновление.
3. Я только что увидел ваше обновление. Результат, который вы запрашиваете, — это массив
$filtered_urls
. Вы пробовали код?4. и в примере это комментарий с тремя ссылками.
5. @phuochq Хорошо, значит, вы не будете принимать никаких дополнительных параметров пути после /abc/?