[]
php ve preg_replace
Elimde onlarca html dosyası var.bu html dosyaları aşağıdaki satırlardan oluşuyor.
<div style="blabla" class="cls_002">1<\/div>
<div style="blablabb" class="cls_002">2<\/div>
<div style="blablacc" class="cls_002">3<\/div>
<div style="blabldda" class="cls_002">4<\/div>
İçlerinden benim oluşturacağım kuralla bazı satırlarda değişiklik yapacağım ancak style tag'i devamlı değiştiği için preg_replace'de zorlanıyorum.
$alla = preg_replace('/<div style=(*.?) class=\"cls_002\">' .$no_d. '<\/div>/si', 'Eklenecek metin <div style\=$1 class=\"cls_002\">' .$no_d. '<\/div>', $alla);
bu satırda $no_d değişkeni 4 olsa bile sadece 1 olarak görüyor. Var mıdır bunun bir yolu?
<div style="blabla" class="cls_002">1<\/div>
<div style="blablabb" class="cls_002">2<\/div>
<div style="blablacc" class="cls_002">3<\/div>
<div style="blabldda" class="cls_002">4<\/div>
İçlerinden benim oluşturacağım kuralla bazı satırlarda değişiklik yapacağım ancak style tag'i devamlı değiştiği için preg_replace'de zorlanıyorum.
$alla = preg_replace('/<div style=(*.?) class=\"cls_002\">' .$no_d. '<\/div>/si', 'Eklenecek metin <div style\=$1 class=\"cls_002\">' .$no_d. '<\/div>', $alla);
bu satırda $no_d değişkeni 4 olsa bile sadece 1 olarak görüyor. Var mıdır bunun bir yolu?
anlamadım ne yapmak istediğini ama
function generateNewContent($matches)
{
$content = '';
//bişeyler yap burda
return $content;
}
$pattern = "/<div style=\"(?P<style>.*)\" class=\"cls_002\">(?P<number>[0-9]*)<\\/div>/u";
$callback = 'generateNewContent';
preg_replace_callback($pattern, $callback, $text);
gibi bişey yapsan daha kolay ve anlaşılır olur sanırım.
ps: named subpattern kullanalım kullandıralım
function generateNewContent($matches)
{
$content = '';
//bişeyler yap burda
return $content;
}
$pattern = "/<div style=\"(?P<style>.*)\" class=\"cls_002\">(?P<number>[0-9]*)<\\/div>/u";
$callback = 'generateNewContent';
preg_replace_callback($pattern, $callback, $text);
gibi bişey yapsan daha kolay ve anlaşılır olur sanırım.
ps: named subpattern kullanalım kullandıralım
- lpgli tosbaga (23.10.12 20:51:52)
lpgli tosbaga teşekkürler. Biraz acemilik olduğu için derdimi anlatamadım
Elimdeki html dosyada aşağıdaki gibi bir döngü var
<div style="blabla" class="cls_002">1<\/div>
<div style="blablaaa" class="cls_002">aaa<\/div>
<div style="blablabb" class="cls_002">bbb<\/div>
<div style="blablccc" class="cls_002">ccc<\/div>
<div style="blabla" class="cls_002">2<\/div>
<div style="blablabb" class="cls_002">ddd<\/div>
<div style="blablacc" class="cls_002">eee<\/div>
<div style="blabldda" class="cls_002">fff<\/div>
<div style="blabddd" class="cls_002">3<\/div>
<div style="blableee" class="cls_002">ggg<\/div>
<div style="blablfff" class="cls_002">hhh<\/div>
<div style="blablggg" class="cls_002">iii<\/div>
Ben her grubun sonuna bir metin eklemek istiyorum. Bunun içinde sanırım preg_replace_callback kullanacağım. Doğrudur değil mi?
Elimdeki html dosyada aşağıdaki gibi bir döngü var
<div style="blabla" class="cls_002">1<\/div>
<div style="blablaaa" class="cls_002">aaa<\/div>
<div style="blablabb" class="cls_002">bbb<\/div>
<div style="blablccc" class="cls_002">ccc<\/div>
<div style="blabla" class="cls_002">2<\/div>
<div style="blablabb" class="cls_002">ddd<\/div>
<div style="blablacc" class="cls_002">eee<\/div>
<div style="blabldda" class="cls_002">fff<\/div>
<div style="blabddd" class="cls_002">3<\/div>
<div style="blableee" class="cls_002">ggg<\/div>
<div style="blablfff" class="cls_002">hhh<\/div>
<div style="blablggg" class="cls_002">iii<\/div>
Ben her grubun sonuna bir metin eklemek istiyorum. Bunun içinde sanırım preg_replace_callback kullanacağım. Doğrudur değil mi?
- doink (23.10.12 21:01:25)
preg_replace adı üzerinde bulur ve değiştirir.
preg_replace_callback bulur ve bulduğunu bir fonksiyona gönderir o fonksiyon onu işler ve sonucunu bulduğu ile değiştirir.
preg_replace_callback bulur ve bulduğunu bir fonksiyona gönderir o fonksiyon onu işler ve sonucunu bulduğu ile değiştirir.
- lpgli tosbaga (23.10.12 21:14:44)
1