2017-09-11 1 views
-1

Ich versuche, den gesamten verfügbaren Text in SQL-Tabelle mit Array zu ersetzen, aber ich weiß nicht, wie es zu erreichen. Ich bin erfolgreich alle Ergebnisse zu erhalten, aber ich bin nicht in der Lage es in str_replace() zu verwenden FunktionPHP/MySQL-Array Replace-Funktion funktioniert nicht

Hier ist mein Array

Array 
(
    [0] => Array 
     (
      [txtSearch] => fruits 
      [txtReplace] => pizza 
     ) 

    [1] => Array 
     (
      [txtSearch] => vegetables 
      [txtReplace] => beer 
     ) 

    [2] => Array 
     (
      [txtSearch] => fiber 
      [txtReplace] => ice cream 
     ) 

) 

Hier ist mein PHP-Code

include('site-primary-config.php'); 
$select="SELECT txtSearch, txtReplace FROM tblreplacements"; 
$result = $conn->query($select) or die($conn->error.__LINE__); 

$arr = array(); 
if($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     $arr[] = $row; 
    } 
} 
echo '<pre>'; 
print_r($arr); 
echo '</pre>'; 

$phrase = "You should eat fruits, vegetables, and fiber every day."; 
//$healthy = array("fruits", "vegetables", "fiber"); 
//$yummy = array("pizza", "beer", "ice cream"); 
$newphrase = str_replace($arr['txtSearch'], $arr['txtReplace'], $phrase); 
echo $phrase . "<br />" . $newphrase; 

Antwort

1

Es ist ein Fehler in Ihrer Suche und ersetzen Sie Arrays. Sie müssen Arrays von Strings sein.

$arr = array('txtSearch' => array(), 'txtReplace' => array()); 
if($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     $arr['txtSearch'][] = $row['txtSearch']; 
     $arr['txtReplace'][] = $row['txtReplace']; 
    } 
} 

und dann:

$newphrase = str_replace($arr['txtSearch'], $arr['txtReplace'], $phrase); 
+0

Funktioniert perfekt Bündel von Dank – Rtra

1

Ihre aktuellen Code gegeben, müssen Sie txtSearch und txtReplace in einer einzigen Dimension extrahieren:

$s = array_column($arr, 'txtSearch'); 
$r = array_column($arr, 'txtReplace'); 
$newphrase = str_replace($s, $r, $phrase); 

Oder ein Array verwenden:

$x = array_column($arr, 'txtReplace', 'txtSearch'); 
$newphrase = str_replace(array_keys($x), $x, $phrase); 

Oder noch besser verwenden strtr():

$newphrase = strtr($phrase, array_column($arr, 'txtReplace', 'txtSearch'));