2015-10-30 56 views
1

我想更改字符串中找到的每個標題的標題。將標題更改爲字符串中的所有標題

例如使用下面的字符串

$newText = ' title2="up_164_hT7PJt6RQZkNEn5.jpg" title2="up_164_hT7PJt6RQZkNEn5.jpg" title2="up_164_hT7PJt6RQZkNEn5.jpg" '; 

我需要執行preg_match_all所以要找到所有的實例,然後爲每一個,尋找新的標題數據庫,然後替換。

這裏是我做媒體鏈接:

$newText = ' title2="up_164_hT7PJt6RQZkNEn5.jpg" title2="up_164_hT7PJt6RQZkNEn5.jpg" title2="up_164_hT7PJt6RQZkNEn5.jpg" '; 

if ($matches2 = preg_match_all('/.?title2="(.*?)"/', $newText, $repeat2, PREG_PATTERN_ORDER)) { 

$replace2 = ' title="'.$title.'"'; 

for ($x2 = 0; $x2 < $matches2; $x2++) { 

    $value = $repeat2[1][$x2]; 
    $sqlTitle = $mysqli->query("SELECT text FROM files WHERE fileName = '$value' "); 
    $rowTitle = $sqlTitle->fetch_array(); 
    $title[$x2] = $rowTitle[0]; 
    $replace2 .= $repeat2[1][$x2]; 

} 


$newText = str_replace($repeat2[0][$x2], $replace2, $newText); 
} 

echo $newText; 

感謝你的幫助。

回答

0

這是使用preg_replace_callback功能,這樣一個很好的例子:

<?php 

$newText = ' title2="up_164_hT7PJt6RQZkNEn5.jpg" title2="up_164_hT7PJt6RQZkNEn5.jpg" title2="up_164_hT7PJt6RQZkNEn5.jpg" '; 

$newText = preg_replace_callback(
    '/(?<=\stitle2=")[^"]*(?=")/', 
    function ($match) { 
     $sqlTitle = $mysqli->query("SELECT text FROM files WHERE fileName = '{$match[0]}' "); 
     $rowTitle = $sqlTitle->fetch_array(); 
     return $rowTitle[0]; 
    }, 
    $newText); 

echo $newText; 

注意(?<= ...)是回顧後積極的特點和(?= ...)是在先行積極的特點(見鏈接)。

參考文獻: