|
|
|
| Здравствуйте.
Помогите пожалуйсто. Ломаю голову уже часов пять.
Мне нужно из html файла получить url далее, нужно из url удалить параметр в котором имя которого я знаю, а значение нет.
Вот допустим я получил url: http://my_host/index.php?param_name=param_value
где имя параметра (param_name) я знаю, а значение (param_value) не известно, может быть каким угодно.
Мне нужно удалить из html во всех url параметры и их значения если, имена параметров повторяются.
Спасибо. | |
|
|
|
|
|
|
|
для: kostiaGt
(16.08.2009 в 01:23)
| | >если, имена параметров повторяются.
повторяются в одной QUERY_STRING, или вообще повторяются ?
>удалить из html во всех url параметры
url это атрибут чего-нибудь , или тег так называется , или это адреса по которым получали эти html ?
просще было-бы если набросали-бы кусочек этого html , с выделением/указанием того чего в нём удалить | |
|
|
|
|
|
|
|
для: 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=некое занчение . | |
|
|
|
|
|
|
|
для: 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=
?>
| и это не на все возможные случаи | |
|
|
|