Доброго времени суток! Очень нужна помощь! Есть строка - html-код. Требуется относительные ссылки перевести в абсолютные(для отправки на мыло). Примерный алгоритм мне представился в следующем виде: 1. Ищем строку href=" (могут быть пробелы или переносы); 2. Если после найденной строки НЕ идёт текст вроде http:// https:// ftp:// mailto: - то это относительный url. 3. Если url относительный, меняем href=" на href="www.site.ru/ Думаю нужно использовать функцию preg_replace. Пытался сам собрать регэксп - получилось чтото вроде Код (Text): preg_replace('/href\s*=\s*\"[^(http:\/\/|https:\/\/|ftp:\/\/|mailto:)]/', '/href\s*=\s*\"www.site.ru\//', $str); - не работает, я нуб в регэкспах - ПОЖАЛУЙСТА, ПОМОГИТЕ!
Группа литералов указывает не на упорядоченный набор, а на группу селекторов, по которым будет детерменирована строка.
Спасибо за ответ, но мне это не о чём не говорит(. Можешь на примере обьяснить, плизз? Или подсказать решение?
Ну что никто не поможет? Нашел такую вещь http://regexpres.narod.ru/calculator.html Ввожу: Регулярное выражение Код (Text): href=\"(?!http\/\/:|https\/\/:) Заменить (снизу выбрать replace) Код (Text): href="www.site.ru/ Всё работает как надо! НО! не могу заставить тоже саме работать в php: Код (Text): $str = 'href="blabla'; str_replace('/href=\"(?!http\/\/:|https\/\/:)/','href="www.site.ru',$str); echo $str; Выводит строку без изменений.. Помогите плз, срочно нужно!!!
Всем спасибо! Разобрался сам!!!! Вдруг кому пригодится: Код (Text): $string = 'любой html код'; $pattern = array('/href\s*=\s*\"\s*(?!http:\/\/|https:\/\/|ftp:\/\/|mailto:)/','/src\s*=\s*\"\s*(?!http:\/\/|https:\/\/|ftp:\/\/)/'); $replacement = array('href="http://site.ru/','src="http://site.ru/'); echo preg_replace($pattern, $replacement, $string); Итак, здесь выводится строка string, но все относительные пути для картинок и ссылок конвертируются в абсолютные (домен нужный впишите). Единственное - путь в ссылках/картинках должен быть заключён в такие "" кавычки.
dwight Садись, два! (с) Протокол передачи фиксирован, это плохо. Правь логику, чтобы проверяла сначала наличие любого протокола, других проверок не нужно. Тем более указывать отдельно href и src.
Раз уж Вы в этом так разбираетесь, может предложите реальную помощь? Проверка наличия любого протокола - примерно понятно: Код (Text): /\w{3,8}:\/\// А вот как сделать чтобы href меняло на href, a src на src в одном выражении - я не знаю...
dwight У меня есть два пути: дать готовое решение и этим самым опустить вас с вашей недоделанной квалификацией (образно) или действительно помочь разобраться, указывая на ошибки. Второй способ заставляет думать и учиться, первый способ - жить за чужой счет на готовом. Если я дам вам регулярное выражение, то никаких пояснений больше не ждите. Дам вам время подумать до вечера, потом напишу регулярное выражение =)
Apple Согласен, это правильная позиция. Только пока представить не могу, как обойтись без массивов...