Заменить все слеши в определенных тегах

Статус
В этой теме нельзя размещать новые ответы.

alexz15

Постоялец
Регистрация
3 Окт 2008
Сообщения
394
Реакции
194
Помогите написать регулярку для замены всех слэшей в определенных тегах, например:
HTML:
<td class="started">one/two/three</td>
нужно заменить на:
HTML:
<td class="started">one, two, three</td>
 
как то так

PHP:
if (preg_match ("/<td[^>]+>[^~]+?<\/td>/i", $str, $rg))
  $str = str_replace ("/", ",", $str);
 
diavolic, так заменяются все слэши и в тегах в т.ч. <,td>. нужно чтобы только внутри тегов.
 
Помогите написать регулярку для замены всех слэшей в определенных тегах, например:
HTML:
<td class="started">one/two/three</td>
нужно заменить на:
HTML:
<td class="started">one, two, three</td>
PHP:
<?
echo preg_replace("'(<td class=\"started\">.*?)\/(.*?)\/(.*?</td>)'","\\1, \\2, \\3", $str);
?>
 
VandJ, спасибо, работает! А как сделать, если слэшей будет не три, а например два или четыре? Я пока что делаю так:
PHP:
$str = '<td class="started">one/two/three</td><br>
<td class="started">one /two/ three/four</td><br>
<td class="started">one/ two</td>';

$str = preg_replace("'(<td class=\"started\">.*?)\/(.*?)\/(.*?)\/(.*?</td>)'","\\1, \\2, \\3, \\4", $str);
$str = preg_replace("'(<td class=\"started\">.*?)\/(.*?)\/(.*?</td>)'","\\1, \\2, \\3", $str);
$str = preg_replace("'(<td class=\"started\">.*?)\/(.*?</td>)'","\\1, \\2", $str);

echo $str;
 
VandJ, спасибо, работает! А как сделать, если слэшей будет не три, а например два или четыре? Я пока что делаю так:
PHP:
$str = '<td class="started">one/two/three</td><br>
<td class="started">one /two/ three/four</td><br>
<td class="started">one/ two</td>';
$str = preg_replace("'(<td class=\"started\">.*?)\/(.*?)\/(.*?)\/(.*?</td>)'","\\1, \\2, \\3, \\4", $str);
$str = preg_replace("'(<td class=\"started\">.*?)\/(.*?)\/(.*?</td>)'","\\1, \\2, \\3", $str);
$str = preg_replace("'(<td class=\"started\">.*?)\/(.*?</td>)'","\\1, \\2", $str);
echo $str;
Теперь не имеет значения, сколько слешей.
PHP:
<?
$str = '<td class="started">one/two/three</td><br> 
<td class="started">one/two/three/four</td><br> 
<td class="started">one/two</td>';
function zamena_slesha($matches) 
  {
  return '<td class="started">'.str_replace("/", ", ", "$matches[1]").'</td>';
  }
echo preg_replace_callback("'<td class=\"started\">(.*?)</td>'","zamena_slesha", $str);
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху