2014-02-16 4 views
0

Я пытаюсь выполнить итерацию по строкам в таблице phpbb phpbb_posts и извлечь каждую запись в столбце post_subject phpbb и сравнить ее значение с предопределенной строкой в Wordpress PHP-файле, но у меня есть некоторые проблемы - выражения не оцениваются как true.

Мои таблицы phpBB установлены в базе данных WP, поэтому у меня есть полный доступ к значениям.

См. Приведенный ниже код, чтобы продемонстрировать проблему, которую я испытываю.

function matchPhpBBTopic() 
{ 
    global $wpdb; 

    $wp_post_title_string = get_the_title(); 

    $result = $wpdb->get_results("SELECT * FROM phpbb_posts"); 

    foreach($result as $row) 
    {  
    $phpbb_post_title_array = array($row->post_subject); 
    $phpbb_post_title_string = implode("", $phpbb_post_title_array); 

    // One of the values in $row->post_subject contains 
    // the value in $wp_post_title_string 
    if (strcmp($wp_post_title_string, $phpbb_post_title_string) == 0) 
    { 
     // This line never runs but the $wp_post_title_string value 
     // is there, in the table, I've printed it and it's there 
     echo 'We found a match!<br>'; 
    }                    
    } 
} 

Любая помощь будет оценена по достоинству.

Итак, другими слова, у меня есть тема размещена в WP и я точно ту же тему размещена в PHPBB, и я хочу перебирать стол PHPBB и когда я нахожу эту тему, я хочу, чтобы запустить код , Я не понимаю, почему выражение «if» не запускается.

ответ

0

не могли бы вы просто сделать:

если ($ wp_post_title_string == $ phpbb_post_title_string) {}

Я не думаю, что зЬгстр() уместно. Он преобразует строку в номера кодировки.

http://us1.php.net/strcmp

проверить Также для нижнего и верхнего корпуса, пространств, а также различные кодировки.

Сделайте strtolower() и аккуратно() и посмотрите, что вы получаете.

Также похоже, что вы подрываете тему и заголовок, поэтому не думайте, что они совпадут.

+0

Эй, я действительно пробовал ==, а также ==== и trim(). Я * знаю * значение присутствует в таблице, потому что я распечатываю значения (только что показанные в приведенном выше примере). Таким образом, $ wp_post_title_string содержит «Test», а $ phpbb_post_title_string содержит «Test». Нет пробелов, нет разного характера, и все же я не могу заставить его возвращать true. Я не знаю почему. Я даже попробовал strpos(), и он не нашел строку, это странно. – rwx

+0

Но вот самая странная часть, если вы делаете strpos ($ wp_post_title_string, «Test»), которая вернет true, но если вы сделаете strpos ($ wp_post_title_string, $ phpbb_post_title_string), хотя $ phpbb_post_title_string содержит «Test», он возвращает false. Что здесь происходит? Что мне не хватает? – rwx

+1

Прочитайте первые две строки в цикле foreach. Вы создаете массив, а затем вставляете массив. Попробуйте var_dump два значения, когда вы входите в цикл, а затем умираете. Вы точно увидите, что они собой представляют. Вероятно, вы могли бы сделать что-то вроде if ($ wp_post_title_string == $ row ['post_subject']) Удалите эти первые две строки в цикле. Когда вы выполните var_dump, вы, вероятно, обнаружите, что одна переменная по-прежнему является массивом или неопределенна, потому что вы используете объектную нотацию на том, что, вероятно, является массивом. – Darius

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