Вырезать двойные ковчычки, не трогая 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"> тоже встречаются ковычки. Можно ли в функцию изменить так, чтобы в адресе ссылки ковычки тоже убирались?
Добавлено через 00:34 сек.
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)
еслиб время было и перспектива личного использования кода, то помог бы...))) долговатая работа может получитса
Добавлено через 01:42 сек.
есть вроде что то подобное для проверки валидности и исправления синтаксиса html кода...я гдет видел реализацию на php гугли)))
18.
Дмитрий (26.11.2011 / 01:17)
Включай magic_quotes и вырезай свободно регуляркой
19.
Удаленный (26.11.2011 / 01:47)
<a href='bla bla bla "delete" bla bla'>
Добавлено через 08:42 сек.
ссылка с текстом откуда берется? если ссылка берется из базы то так же
$mytext = str_replace('"', '', $mytext);
20.
Удаленный (26.11.2011 / 01:59)
а если ковычки нужны то
$mytext = str_replace('"', '\"', $mytext);
URL:
https://visavi.net/topics/26721