2013-04-08 1 views
0

В принципе, результат, который я ищу, - это то, как в Википедии есть текст со ссылками, хотя есть текст на другие страницы в Википедии. У меня есть база данных, полная определений, и у меня есть абзац, полный текста, который я хочу разбить пробелами, проверить таблицу sql для существования всех слов и заменить те, которые существуют со ссылками. Пожалуйста, помогите. То, что я до сих пор это (но это, кажется, не работает):Как проверить базу данных sql для элементов абзаца, взорванных через пробелы, и заменить их на PHP?

$def = $row['def'];(This is just the paragraph) 
$checks = explode(' ', $def); 

foreach($checks as $key => $check) { 
$sql = mysql_query("SELECT * FROM words WHERE word = '$check'"); 
while($row = mysql_fetch_array($sql, MYSQLI_ASSOC)) { 
$find = $row['word']; 
$new = "text"; 

$final = str_replace($find, $new, $checks); 

print_r($final); 
+0

Итак ... что он делает? – Jon

ответ

0

Я выхожу на конечности здесь, но я думаю, что вы можете страдать от одной из причуд использования foreach, то есть $checks, который вы заменяете внутри foreach, не совпадает с $checks снаружи.

Попробуйте это.

$def = $row['def']; //This is just the paragraph 
$checks = explode(' ', $def); 

for ($i=0; $i<count($checks); $i++) 
{ 
    $sql = mysql_query("SELECT * FROM words WHERE word = '{$checks[$i]}'"); 
    while($row = mysql_fetch_array($sql, MYSQLI_ASSOC)) 
    { 
     //$checks[$i] = "text"; //according to your original example 
     $checks[$i] = "<a href=\"{$row['url']}\">{$row['word']}</a>"; //something like this, assuming you have a column 'url' in the DB with the link you want to refer to 
    } 
} 

$final = implode(' ', $checks); 

print_r($final); 

Не то, чтобы это было очень эффективно, но я думаю, что он должен работать.

+0

Эй, это работает отлично, но теперь слова в абзаце заменяются текстом. Итак, что я должен заменить «текст» как реальное слово, а как ссылку. Это то, что у меня есть: $ checks [$ I] = '' . $checks . '' – user1919552

+0

Я предполагаю, что вы получаете свою замену из базы данных, что-то вроде '$ check [$ i] =" {$row['word']} ";' внутри while (в зависимости от того, поля называются) – danneth

+0

@ user1919552 Если вы довольны ответом, отметьте его как принятый, если у вас все еще есть вопросы, дайте мне знать – danneth

 Смежные вопросы

  • Нет связанных вопросов^_^