2010-11-08 4 views
0

У меня есть, например, эта строка:Remove вопросительные знаки между этими двумя тегами

asd? asdfasdfsdf <description>&lt;div? style=&quot;color:000000;font-family:Arial, Helvetica, ?sans-serif;font-size:12px;font-size:12px;width:555px;&quot;&gt;Bohus Malm?t;/a&gt;</description> blah blah blah? asdfasfize:12px;font-size:? 

Мне нужно знать, как я могу удалить все? который существует только между открытием и закрытием тегов описания, но не теми, которые находятся за его пределами.

Спасибо!

+0

Что вы используете это? Всегда ли это тег описания? –

+0

Да, он всегда будет в теге описания. Мне нужно удалить вопросительные знаки в этих тегах. – user390480

ответ

1

$str = 'asd? asdfasdfsdf <description>&lt;div? style=&quot;color:000000;font-' . 
     'family:Arial, Helvetica, ?sans-serif;font-size:12px;font-size:12px;' . 
     'width:555px;&quot;&gt;Bohus Malm?t;/a&gt;</description> blah blah ' . 
     'blah? asdfasfize:12px;font-size:?'; 
function myReplace($matches) 
{ 
    return $matches[1].str_replace('?', '', $matches[2]).$matches[3]; 
} 
$result = preg_replace_callback(
    '|(.*<description>)(.*)(<\/description>.*)|', 
    'myReplace', 
    $str 
); 
echo htmlspecialchars($result); 
+0

Что делать, если ' ->' присутствует? Или ' ' –

+0

Из данной строки, похоже, что внутреннее и внешнее содержимое экранировано. Разумеется, никакое регулярное выражение не будет таким полным, как [Очиститель HTML] (http://htmlpurifier.org/), особенно когда оно даже ошибочно. –

0

насчет:

$var = 'asd? asdfasdfsdf <description>&lt;div? style=&quot;color:000000;font-family:Arial, Helvetica, ?sans-serif;font-size:12px;font-size:12px;width:555px;&quot;&gt;Bohus Malm?t;/a&gt;</description> blah blah blah? asdfasfize:12px;font-size:?'; 
preg_match('/(.*)(<description>.*<\/description>)(.*)/', $var, $matches); 
$new = $matches[1] . str_replace('?', '', $matches[2]) . $matches[3]; 
0
<?php 
$string = 'asd? asdfasdfsdf <description>&lt;div? style=&quot;color:000000;font-family:Arial, Helvetica, ?sans-serif;font-size:12px;font-size:12px;width:555px;&quot;&gt;Bohus Malm?t;/a&gt;</description> blah blah blah? asdfasfize:12px;font-size:?'; 
$regex = '/(<description>.*)\?(.*<\/description>)/i'; 

while (preg_match($regex, $string)) { 
    $string = preg_replace($regex, '$1$2', $string); 
} 
echo $string; 
?> 
Смежные вопросы