最近、正規表現を触る機会が増えてきまして、その中でタイトルの方法がなかなか見つからなかったので、
「無いなら自分で書いてみよう」ということで。
TL;DR
「before」を「after」に置き換えたい!
これを
<div class="before"> //単体
<div class="hoge before"> //前に他のクラスがついている場合
<div class="before fuga"> //後ろに他のクラスがついている場合
<div class="hoge before fuga"> //前後に他のクラスがついている場合
<div class="hoge_before fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hoge-before fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hogebefore fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hoge before_fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hoge before-fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hoge beforefuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
こうしたい!
<div class="after"> //単体
<div class="hoge after"> //前に他のクラスがついている場合
<div class="after fuga"> //後ろに他のクラスがついている場合
<div class="hoge after fuga"> //前後に他のクラスがついている場合
<div class="hoge_before fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hoge-before fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hogebefore fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hoge before_fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hoge before-fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hoge beforefuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
#サンプルコード
サンプルコード
<?php
$pattern = '/class=((?:\s|")?)(.*?)((?:\s|")+)before((?:\s|")+)(.*?)((?:\s|")?)/';
$replacement = 'class=$1$2$3after$4$5$6';
$html = <<<EOT
<div class="before"> //単体
<div class="hoge before"> //前に他のクラスがついている場合
<div class="before fuga"> //後ろに他のクラスがついている場合
<div class="hoge before fuga"> //前後に他のクラスがついている場合
<div class="hoge_before fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hoge-before fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hogebefore fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hoge before_fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hoge before-fuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
<div class="hoge beforefuga"> //置き換えたいクラス名を含む他のクラスがついている場合(これは置き換えない)
EOT;
$html = preg_replace($pattern, $replacement, $html);
print($html);