Вырезать двойные ковчычки, не трогая html теги
1.
Михаил 22.11.2011 / 08:18
Всем привет. Дан текст <a href="bla bla">Вася Петю "олололо" делала</a>
Какую регулярку нужно составить,чтобы олололо оказалось без ковычек, и при этом не затронулись ковычки html тега. Заранее спасибо
2.
Hennessy 22.11.2011 / 08:48
<a href="bla bla"> - это заранее известно или нет?
3.
Михаил 22.11.2011 / 09:04
bla bla тоже всегда меняется =(
4.
ramzes 22.11.2011 / 09:06
$text = str_replace('"', '', $text); скорее всего сработает
5.
Михаил 22.11.2011 / 09:10
не помогло( в коде ковччки записаны в чистом виде, а не как "
6.
Hennessy 22.11.2011 / 10:36
Тогда никак. Если бы ссылка была постоянной, то тогда ещё можно было бы сообразить...а так - нет...
7.
Дмитрий 22.11.2011 / 10:54
Если я правильно понял
$var = preg_replace('/<a href="(.*)">Вася Петю "(.*)" делала<\/a>/si', '<a href="\1">Вася Петю \2 делала</a>', $var);
короче че то из отряда 8ми колесных...
8.
Hennessy 22.11.2011 / 11:18
Кстати, тоже как вариант... Я где-то у себя такое использовал...для бб-кодов чтоли...
9.
Владислав 22.11.2011 / 12:13
<?
function htmlquot($text)
{
$res='';
$tag=false;
$len=strlen($text);
for($i=0; $i<$len; ++$i)
{
switch($q=$text{$i})
{
case '<':
$tag=true;
$res.='<';
break;
case '>':
$tag=false;
$res.='>';
break;
case '"':
if($tag)$res.='"';
break;
default:
$res.=$q;
break;
}
}
return $res;
};
10.
Владислав 22.11.2011 / 12:30
попробовал регулярку сообразить...в общем регуляркой не получитсо, только перебор, условие перебора можно усложнить
11.
Антон 22.11.2011 / 12:31
4.
ramzes, все правильно ты предложил, только чуть по другому..
$mytext = str_replace('"', '', $mytext);
И тогда все двойные кавычки будут обрезаться в переменной $mytext.
12.
Михаил 22.11.2011 / 12:41
mrUp, работает, спасибо! Но оказывается в <a href="bla bla bla "delete" bla bla"> тоже встречаются ковычки. Можно ли в функцию изменить так, чтобы в адресе ссылки ковычки тоже убирались?
WmLiM, так бы и я сделал....но мне нельзя все ковычки удалять, так как они используются в html тегах
13.
Владислав 22.11.2011 / 13:24
это уже синтаксическая ошибка...любой парсер выдаст ошибку, ибо есть стандарт и он должен соблюдатся...
тобиш парсер поймет код <a href="bla bla bla "delete" bla bla">
как открытый тег
a атрибут тега
href=
"bla bla bla " boolean атрибут
delete и что то непонятное
" bla bla"
14.
Михаил 22.11.2011 / 14:24
т.е убрать ковычки в адресе нельзя?
15.
Владислав 22.11.2011 / 15:03
почему, можно...но это уже будет не просто вырезание кавычек, а работа с исправлением синтаксиса, и в итоге получится вырезать лишь то что не понятно парсеру, тобишь
" bla bla" и при желании не существующие в стандарте boolean атрибуты...если кавычки проэкранированны <a href="bla bla bla \"delete\" bla bla"> это не будет ошибкой синтаксиса и естественно не составит большего труда их вырезать
16.
Михаил 22.11.2011 / 15:07
Я плохо понимаю, как нужно составлять выражения....поэтому прошу помоши....можешь с этим помочь?
17.
Владислав 26.11.2011 / 00:58
еслиб время было и перспектива личного использования кода, то помог бы...))) долговатая работа может получитса
есть вроде что то подобное для проверки валидности и исправления синтаксиса html кода...я гдет видел реализацию на php гугли)))
18.
Дмитрий 26.11.2011 / 01:17
Включай magic_quotes и вырезай свободно регуляркой
19.
Удаленный 26.11.2011 / 01:47
<a href='bla bla bla "delete" bla bla'>
ссылка с текстом откуда берется? если ссылка берется из базы то так же
$mytext = str_replace('"', '', $mytext);
20.
Удаленный 26.11.2011 / 01:59
а если ковычки нужны то
$mytext = str_replace('"', '\"', $mytext);
URL:
https://visavi.net/topics/26721