簡體   English   中英

僅回顯與精確字符串匹配的結果(PHP)

[英]Echo only results that match exact string (PHP)

我正在回應WP數據庫插件的結果,並且我已經設法將所有需要的結果縮小到一個帖子ID,它現在顯示與該帖子ID相關的所有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>';
}


?>

你可能正在尋找startsWith()。 請嘗試以下方法:

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>';
}

startsWith()和endsWith()的實現可以在這里找到startswith-end -withwith-functions-in-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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM