@Elsa12

Как валидировать URL в php?

Добрый день! У меня есть Python сервер, работающий на flask, выглядит он довольно примитивно
import subprocess
import sys,validators, base64
from flask import Flask
from flask import Response
import urlparse

def get_domain(url):
	base_url = urlparse.urljoin(url, '/') #"{0.scheme}://{0.netloc}/".format(urlsplit(url))
	base_url = base_url[(base_url.index('://')+3):-1]
	if base_url[:4] == "www.":
	    base_url = base_url[4:]
	return base_url
app = Flask(__name__)
@app.route("/<url>", methods=['GET'])
def index(url):
    url = base64.b64decode(url)
    if url.find("http") < 0:
        url = "http://" + url
    if validators.url(url) == True: 
        print("Valid")
    else:
        # Check valid adress, do error heandler
        url = "https://sample.com"
    domain = get_domain(url)
    print(url)
    print(domain)
    cmd = './my_app ' + base64.b64encode(url) + ' ' + base64.b64encode(domain)
    PIPE = subprocess.PIPE
    p = subprocess.Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE,
            stderr=subprocess.STDOUT, close_fds=True, cwd='/home/dir')
    resp = Response(p.stdout.read())
    resp.headers['Access-Control-Allow-Origin'] = '*'
    return resp
if __name__ == "__main__":
    context = ("/var/www/httpd-cert/www-root/u_le1.crt", "/var/www/httpd-cert/www-root/u_le1.key")
    app.run(host='0.0.0.0', port=9090, ssl_context=context)


Как реализовать тоже самое только на php? Вся сложность в валидации доменов..
  • Вопрос задан
  • 264 просмотра
Пригласить эксперта
Ответы на вопрос 1
KazeZlat
@KazeZlat
Погромист-затейник
Если спросить у Google "validate url php", то где-то в начале выдачи выйдет документация к функции filter_var(), а по ней можно дойти до списка фильтров.

А потом, если URL валидный (с учетом всех необходимых флагов, которые вы могли задать), можно разобрать URL с помощью parse_url()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект