another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Почему код возвращает значение лишь единожды?

Почему возвращает значение всего один раз? И дайте оценку коду - где чего не хватает или что-то лишнее? Возможно, можно было написать проще?
<?php
class parser {
    protected $url;
    protected $host;
    protected $content;
    protected $link;
    protected $parsed;
    protected $gotHost;

    public function __construct($url) {
        $this->url = $url;
    }

    public function parseIt() {
        $content = file_get_contents($this->url);
        preg_match("~<img src=\"(.*)\"~Uis", $content, $parsed);
        $link = $parsed[1];
        return $link;
    }

    public function getHost() {
        $gotHost = parse_url($this->url, PHP_URL_HOST);
        return $gotHost;
    }
}

$parser = new parser('http://vk.com/id1');
echo $parser->parseIt();
?>
  • Вопрос задан
  • 2839 просмотров
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Я так понимаю вы хотели что бы praseIt вернул вообще все что нашел. Тогда вам нужно использовать preg_match_all.
Ответ написан
@AlexKostin
1. Проще? Можно:
$links = function($url) {
    preg_match_all("~<img src=\"(.*)\"~Uis", file_get_contents($url), $parsed, PREG_PATTERN_ORDER);
    return $parsed[1];
};
foreach($links('http://vk.com/id1') as $link) echo $link."<br>\n";

2. foreach использовать вполне разумно, а вот класс - не уверен. :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы