Glype Proxy preg заменить источник [дубликат]

В последнее время это началось с версии 6.0.4, я не думаю, что это очень хорошее решение, но вот что мне помогло. Закрыть Visual Studio

  1. Откройте приглашение Windows PowerShell в качестве администратора (очень важно) и выполните следующую команду: Set-ExecutionPolicy Bypass
  2. Откройте Visual Studio, откройте свое решение и используйте Nuget для установки JSON.Net (или какой-либо пакет включил его как зависимость).
  3. Как только все работает, я рекомендую снова установить политику выполнения powershell на следующую команду: Set-ExecutionPolicy Restricted
3
задан Sam 30 April 2012 в 20:06
поделиться

2 ответа

Это not задание для регулярного выражения. Это работа для парсера XML / DOM.

Я бы дал DOMDocument выстрел.

$DOM = new DOMDocument;
$DOM->loadHTML($html);

$imgs = $DOM->getElementsByTagName('img');
foreach($imgs as $img){
    $src = $img->getAttribute('src');
    if(strpos($src, 'http://sitename.com/path/') !== 0){
        $img->setAttribute('src', "http://sitename.com/path/$src");
    }
}

$html = $DOM->saveHTML();
7
ответ дан Rocket Hazmat 17 August 2018 в 23:56
поделиться
  • 1
    Я поддерживал его, но ему также нужна проверка атрибутов src, которые уже являются абсолютными, для OP. – Mathletics 30 April 2012 в 20:12
  • 2
    @Mathletics: Ах да, не заметил этого, я могу добавить, что :-P – Rocket Hazmat 30 April 2012 в 20:12
  • 3
    +1, хотя я бы использовал getElementsByTagName вместо xpath – Ja͢ck 30 April 2012 в 20:13
  • 4
    @Jack: Хорошая идея, изменено :-P – Rocket Hazmat 30 April 2012 в 20:16
  • 5
    Ура! Вот так! Вопрос: HTML, который возвращается автоматически, получает теги & lt; doctype & gt ;, & lt; html & gt ;, & lt; body & gt ;, и т. Д. .... Есть ли способ отключить это? Все, что я хочу, это то, что я дал ему, чтобы начать ... просто с частью поиска и замены. Имеет ли это смысл? – Sam 1 May 2012 в 02:56

Это не задание для регулярного выражения. Это работа для парсера XML / DOM.

Нет, это не так. Если вы просто хотите добавить префикс к каждому атрибуту src, лучше использовать простые строковые функции и даже не думать о синтаксическом анализе xml, regex или dom ...

$str = str_replace('<img src="', '<img src="http://prefix', $str);

Вы можете очистить неправильные ссылки (уже абсолютные) после

$str = str_replace('<img src="http://prefixhttp://', '<img src="http://', $str);

Не взорвите свой код с помощью regexp / dom, если вы можете его избежать.

-1
ответ дан sbstjn 17 August 2018 в 23:56
поделиться
  • 1
    Что произойдет, если мой HTML был <img class='animals' src='puppies.jpg' />? – Rocket Hazmat 30 April 2012 в 20:15
  • 2
    Где в этом коде вы будете проверять относительные URL-адреса? – Ja͢ck 30 April 2012 в 20:22
  • 3
    @Rocket извините, но он сказал, что его HTML <img src="puppies.jpg"> – sbstjn 1 May 2012 в 01:35
  • 4
    неправильные ссылки могут быть легко исправлены: str_replace('prefixprefix', 'prefix', $str) str_replace('http://prefix/http://', 'http://', $str) не взорвать ваш код с помощью regex / dom, если вам не нужно ... – sbstjn 1 May 2012 в 01:38
  • 5
    @semu, я полностью с вами на этом. Для этого экземпляра (и моего) нет причин добавлять все виды ненужных накладных расходов, когда существует простое решение ... хотя и не самый изящный, он определенно выполняет свою работу. – Sam 7 July 2012 в 02:29
Другие вопросы по тегам:

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