mysql — выводит только те результаты, которые соответствуют точной строке (PHP)

Я отражаю результаты из плагина базы данных WP, и мне удалось сузить все требуемые результаты до идентификатора поста, теперь он отображает все записи URL, связанные с этим идентификатором поста. (Прокрутите вниз по этой ссылке, чтобы увидеть результаты: http://universitycompare.com/analytics-test/)

Вот что я использую для отображения записей базы данных SQL:

  <?php
echo "<strong>Stack Overflow Results</strong>";
echo "<br><div style='float:left; width:100%; padding:1em; background:#FFF; margin:2em 0;'>";
$lastDate = date('Y-m-d', strtotime('today - 30 days'));
$todayDate = date('Y-m-d');

$results = $wpdb->get_results( "SELECT * FROM `wp_statistics_pages` WHERE id=37 AND `date` BETWEEN '$lastDate' AND '$todayDate' ", ARRAY_A );
for($i=0;$i<count($results);$i++)
{
echo "<span id='data-point'style='float:left;clear:left;' value='";
echo $results[$i]['count'];
echo "'>";
echo get_site_url().''.$results[$i]['uri'].' (';
echo $results[$i]['count'].')</span>';
} ?>

У меня есть несколько результатов, которые связаны с URL, но не являются конкретными (см. Ниже пример того, что отображается). То, что я хотел бы сделать, это только отображать результаты, которые соответствуют этому URL: http://universitycompare.com/universities/anglia-ruskin-uni/

universitycompare.com/universities/anglia-ruskin-uni/ (103) universitycompare.com/universities/anglia-ruskin-uni?offset=10 (1) universitycompare.com/universities/anglia-ruskin-uni/?offset=10 ( 1) universitycompare.com/universities/anglia-ruskin-uni (1)

Выше приведен пример, я не хочу отображать результаты, которые точно не соответствуют выбранному URL. В идеале, только запись, которая должна быть показана, должна быть результатами с (103) рядом с ней. Я не знаю лучшего способа сделать это.

Я посмотрел регулярное выражение, но немного не уверен? Это то, что мне нужно использовать?

Изменить (ответ на вышеупомянутый вопрос, слишком низкий балл пользователя, чтобы ответить на собственный вопрос):

      <?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);

function startsWith($haystack, $needle) {
// search backwards starting from haystack length characters from the end
return $needle === "" || strrpos($haystack, $needle, -strlen($haystack)) !== FALSE;
}

function endsWith($haystack, $needle) {
// search forward starting from end minus needle length characters
return $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== FALSE);
}

echo "<strong>Stack Overflow Results</strong>";
echo "<br><div style='float:left; width:100%; padding:1em; background:#FFF; margin:2em 0;'>";
$lastDate = date('Y-m-d', strtotime('today - 30 days'));
$todayDate = date('Y-m-d');

$results = $wpdb->get_results( "SELECT * FROM `wp_statistics_pages` WHERE id=37 AND `date` BETWEEN '$lastDate' AND '$todayDate' ", ARRAY_A );
for($i=0;$i<count($results);$i++)
if (endsWith(get_site_url().''.$results[$i]['uri'], 'http://universitycompare.com/universities/anglia-ruskin-uni/'))

{
echo "<span id='data-point'style='float:left;clear:left;' value='";
echo $results[$i]['count'];
echo "'>";
echo get_site_url().''.$results[$i]['uri'].' (';
echo $results[$i]['count'].')</span>';
}


?>

3

Решение

Возможно, вы ищете StartWith (). Попробуйте следующее:

if (startsWith($results[$i]['count'], 'universitycompare.com/universities/anglia-ruskin-uni'))
{
echo "<span id='data-point'style='float:left;clear:left;' value='";
echo $results[$i]['count'];
echo "'>";
echo get_site_url().''.$results[$i]['uri'].' (';
echo $results[$i]['count'].')</span>';
}

Реализацию StartWith () и EndWith () можно найти здесь StartsWith-и-EndsWith-функции-в-PHP

function startsWith($haystack, $needle) {
// search backwards starting from haystack length characters from the end
return $needle === "" || strrpos($haystack, $needle, -strlen($haystack)) !== FALSE;
}
function endsWith($haystack, $needle) {
// search forward starting from end minus needle length characters
return $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== FALSE);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]