Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как разобрать параметры URL из HTML
 
 автор: kostiaGt   (16.08.2009 в 01:23)   письмо автору
 
 

Здравствуйте.

Помогите пожалуйсто. Ломаю голову уже часов пять.
Мне нужно из html файла получить url далее, нужно из url удалить параметр в котором имя которого я знаю, а значение нет.
Вот допустим я получил url: http://my_host/index.php?param_name=param_value
где имя параметра (param_name) я знаю, а значение (param_value) не известно, может быть каким угодно.
Мне нужно удалить из html во всех url параметры и их значения если, имена параметров повторяются.

Спасибо.

  Ответить  
 
 автор: heed   (16.08.2009 в 03:14)   письмо автору
 
   для: kostiaGt   (16.08.2009 в 01:23)
 

>если, имена параметров повторяются.
повторяются в одной QUERY_STRING, или вообще повторяются ?

>удалить из html во всех url параметры
url это атрибут чего-нибудь , или тег так называется , или это адреса по которым получали эти html ?

просще было-бы если набросали-бы кусочек этого html , с выделением/указанием того чего в нём удалить

  Ответить  
 
 автор: kostiaGt   (16.08.2009 в 09:49)   письмо автору
 
   для: heed   (16.08.2009 в 03:14)
 


..
<body>

<a href='http://my_host/index.php?uid=user1&uid=user2&lang=ru'> Home </a>
нужно сделать:  <a href='http://my_host/index.php?lang=ru'> Home </a>
или <form action='index.php?uid=user1&lang=ru'>
нужно сделать: <form action='index.php?lang=ru'>

</body>
..



здесь я знаю имя параметра uid но, какое он будет иметь значение я не знаю.
мне нужно со всех url в тексте html удалить части строк содержащие строку uid=некое занчение .

  Ответить  
 
 автор: heed   (16.08.2009 в 12:42)   письмо автору
 
   для: kostiaGt   (16.08.2009 в 09:49)
 

<?php
$txt 
=".. 
<body>
<a href='http://my_host/index.php?uid=user1&uid=user2&lang=ru'> Home </a> 
нужно сделать: <a href='http://my_host/index.php?lang=ru'> Home </a> 
или <form action='index.php?uid=user1&lang=ru'> 
нужно сделать: <form action=\"index.php?lang=ru\"> 
</body> 
.."
;

#одним preg_replace
$re '@

(<[af](orm)?\b #здесь упростил <aorm> небывает
(?(2)            #условная подмаска "если было (orm)"
[^>]*?action=
|[^>]*?href=)    #или
["\']?        # дальше начинается содержимое аттрибута
[^\s"\'\?>]*\? # адреса без \? ненужны
(?:(?!uid=)\w+= # пропуск других аттрибутов
[^\s"\'>&]*&(?:amp;)?)* # сколько-бы небыло
) # всё это записывалось в значение захватываемое подмаской
(?:uid=[^\s"\'>&]*&?(?:amp;)?)+ #то что нужно не захватывается

@ix'
;
//preg_match_all($re, $txt, $out );
//print_r($out);

echo '<pre>'
 
htmlspecialchars(preg_replace($re'$1'$txt))
################################################
 
"\n\n\nвторой вариант<hr/>";
# или извлечение с последующей обработкой

$re '#(<[af](?:orm)?\b[^>]*?(?:action|href)=["\']?)([^\s"\'>]+)#i';

function 
r_cb($m){
 return 
$m[1] . preg_replace('#\buid=[^&]*&?(?:amp;)?#',
        
''$m[2]);
}
echo 
htmlspecialchars(preg_replace_callback($re'r_cb'$txt));
# тоже всё слегка упросчено
#, но не зависит от того идут-ли подряд несколько uid=
?>
и это не на все возможные случаи

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования