preg_replace: Как его удалить

  • Автор темы Orangeball
  • 35
  • Обновлено
  • 12, May 2024
  • #1
Пожалуйста, помогите мне, как его использовать
http://www.phpliveregex.com/p/eyZ

  <form method="GET">

<div class="row">

<div class="input-group">



<input name="url" type="text" class="form-control" placeholder="Пример <a href="https://lumtu.com/yti/dk22kdGVodHRwOi8vc2l0ZS5jb20vaWQxMjQ1MzYvMDUvaG93X3RvX21ha2VfYV9waHBfcBHa" target="_blank" rel="nofollow noopener" title="preg_replace: Как его удалить">http://www.site.com/id124536/05/how_to_make_a_php_site" required>

<span class="input-group-btn">

<button class="btn btn-info" type="submit">DOWNLOAD</button>

</span>

</div><!-- /input-group -->

</div><!-- /.row -->

</form>

<br>

<?php

function Videos($url)

{

$url = str_replace(' ', '', $url);

if(!empty($url)):

curl_setopt($curl = curl_init($url), CURLOPT_RETURNTRANSFER, 1);

preg_match("/flv_url=(.+)url_bigthumb=([^&]+)/i", curl_exec($curl), $infos);

curl_close($curl);

return "<a href='".urldecode($infos[1])."'><img class='img-thumbnail' src='".urldecode($infos[2])."' width='300' height='200' border=0 alt='Скачать'></a>";

endif;

}

echo Videos($_GET['url']);

?>

</div>
Код (разметка): http://www

. сайт. ком/id124536/05/How_to_make_a_php_site как убрать при вводе данных

Orangeball


Рег
05 Sep, 2014

Тем
2

Постов
3

Баллов
23
  • 20, May 2024
  • #2
Да, я действительно не понимаю всей картины. Форма, которую вы включили, похоже, имеет отношение к следующему за ней PHP и изобилует ошибками. (например, где находится ваш набор полей и метка, почему тег кнопки выполняет работу ввода, что за дополнительный DIV даром...) и крайне неясно, что возвращает ваш CURL или как он связан с тем URI, который вы опубликовали после кода.
 

VickaAh


Рег
01 Jan, 2011

Тем
0

Постов
1

Баллов
1
  • 03, Jun 2024
  • #3
Хорошо, разобравшись в теме, спасибо, что не выложили это публично в открытую. Что касается вашей проблемы, вы смотрите на это неправильно.

URI, с которым у вас возникли проблемы, на самом деле является перенаправлением 301. Таким образом, вместо того, чтобы возвращать нужный вам контент, он возвращает новый заголовок «Местоположение». По умолчанию cURL не будет пытаться следовать перенаправлениям.

Вы можете ПОПРОБОВАТЬ добавить:

Curl_setopt ($ Curl, CURLOPT_FOLLOWLOCATION, 1);

Между вашим первым Curl_setopt и запуском Curl_exec, но это не будет работать, если активен PHP с неправильным именем "safe_mode" (что нет причин для этого в любое время после 2003 года) ИЛИ если установлен open_basedir (что существует законно). причины использования).

Вообще говоря, слепо доверять тому, что операция cURL вернет ответ «200 ok», — это небрежная/плохая практика, поэтому слепо выгружать результат этого выполнения в функцию — это просто просить ее сломаться.



Мне нравится использовать метод, заключающийся в добавлении цикла, перехватывающего 300-серийные серии для перенаправлений, и бомбардировки, если передается какой-либо другой ответ, отличный от 200. Обработка ошибок ОЧЕНЬ важна, особенно если вы собираетесь извлекать прямые ссылки DL из flashvars веб-сайта.

Это звучит примерно так:

используйте код в следующем сообщении

Это непроверено, но должно дать вам представление о глубине тестирования, необходимой для правильной обработки всех возможных ошибок.

Если у меня будет время позже, когда я вернусь за рабочий стол, я попробую разобраться, как расставить точки над буквами и зачеркнуть и в этом.

или, хм, что угодно. Действительно пытаетесь проанализировать значение вместо того, чтобы следовать перенаправлению? Это просто просьба, чтобы он снова сломался, двигаясь вперед.
 

davkms


Рег
17 Aug, 2010

Тем
1

Постов
4

Баллов
14
  • 03, Jun 2024
  • #4
Хорошо, да, несколько опечаток.

одна ненужная (), два $ перед именами функций (да) и одна двойная кавычка, которая должна была быть одинарной.

Плохо, что я получаю за написание кода в почтовом ящике здесь, на форуме, на ноутбуке.

Доберитесь до рабочей станции, и это типа «Ну ДА!» Это должно работать:
 /*

NOTE redirect_url is only valid in PHP 5.3.7/newer, for older PHP

support you'd need to parse the content of the response from cURL

Though really at that point, just upgrade to a PHP from THIS century!

*/

function getUri($uri) {

do {

$curl = curl_init($uri);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

// set it to TRY and handle it automagically

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

// break the erorr condition handling into steps

if (curl_errno($curl)) {

$result = [ 'curlError' => $curl_error($curl) ];

curl_close($curl);

return $result;

}

$result = [ 'data' => curl_exec($curl) ];

if (curl_errno($curl)) {

$result['curlError'] = $curl_error($curl);

curl_close($curl);

return $result;

}

$result['curlError'] = false;

$result['info'] = curl_getinfo($curl);

// use switch so if we want to add more handlers it's simpler

switch ($result['info']['http_code']) {

case 301:

case 302:

$uri = $result['info']['redirect_url'];

break;

default:

curl_close($curl);

return $result;

}

} while (true);

} // function getUri

function videoFromUrl($url) {

if (!isset($url) || empty($url = str_replace(' ', '', $url)))

return '

<div class="error">

No File Specified

</div>';

$result = getUri($url);

if ($result['curlError']) return '

<div class="error">

Error "' . $result['curlError'] . '"

</div>';

if ($result['info']['http_code'] == 200) {

preg_match(

"/flv_url=(.+)url_bigthumb=([^&]+)/i",

$result['data'],

$infos

);

return '

<a href="' . htmlspecialchars(urldecode($infos[1])) . '">

<img

src="' . htmlspecialchars(urldecode($infos[2])) . '"

class="img-thumbnail"

width="300" height="200"

alt="Скачать"

>

</a>';

}

return '

<div class="error">

Unable to recover file. HTTP error code ' .

$result['info']['http_code'] . '

</div>';

} // function videoFromUrl
Код (разметка): просто вызовите «videoFromUrl», где вы использовали функцию «Видео». Это даст вам гораздо более надежную обработку ошибок и автоматически справится с этим перенаправлением.

что хорошо.

Попытка проанализировать чужой URL-адрес, который перенаправляет вас, может укусить вас позже, если они решат СНОВА изменить перенаправление.

В первую очередь вам лучше просто следить за тем, как должны работать ответы HTTP-заголовка. Здесь все работало нормально, вызывая URL-адрес, который вы отправили в личку, с дополнительным каталогом.
 

predmet


Рег
01 Jan, 2011

Тем
1

Постов
3

Баллов
13
  • 09, Jun 2024
  • #5
Некоторый контекст был бы хорош. Зачем вам нужно удалить этот бит? Будет ли этот бит всегда находиться в одном и том же месте? Есть ли у вас какой-либо контроль над остальной частью URL-адреса (как он отформатирован, какой это домен, какой идентификатор и т. д.?)
 

Вов1


Рег
30 Nov, 2014

Тем
1

Постов
3

Баллов
13
Тем
49554
Комментарии
57426
Опыт
552966

Интересно