サポート » 使い方全般 » get_page_by_titleで同一タイトルがあるのにマッチしない

  • aki

    (@akistar02)


    $post = get_page_by_title($title,ARRAY_N,’post’);
    if($post[5]){
    処理~
    }

    という感じで、$titleに文字を入れてそれが既に投稿されているタイトルと同じだったら処理をする、というプログラムを書いています。
    具体的に言うと指定したサイトをスクレイピングしてきて、既に登録した記事だったらスクレイピングを中止させるという処理を書いています。
    そこで、この条件分岐がなぜか動かないのです。

    ためしにこのようにして既に投稿しているタイトルをじか打ちして$titleには取得したデータをいれて文字数をカウントしてみたいのですが、同じ文字数なのに結果が異なりました。
    echo $title.”(“.mb_strlen($title).”)—“.”テストタイトル(“.mb_strlen(“テストタイトル”).”)”.”
    “;

    get_page_by_titleでマッチさせるにはシステム上の文字数(mb_strlen)が一致しないと駄目なのでしょうか?
    文字コードはどちらもUTF-8でした。

    また、本来はここで聞くことではないかもしれませんが、同じ文字なのにmb_strlenの値が違うという場合の解決方法も語人事の方がいれば教えていただけないでしょうか?

    よろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 下記リンク先の情報が参考になるかもしれません。
    mb_strlen()関数の落とし穴 – 日経ITPro

    「PHPの内部エンコーディングが文字列のエンコードと異なっている時に起こります。」だそうです。

    トピック投稿者 aki

    (@akistar02)

    これは見て試したのですが駄目だったんですよ・・・
    でも回答ありがとうございます。

    私のWordPress環境も mb_internal_encoding()'UTF-8' なので mb_strlen("テストタイトル") が 7 で間違いない筈ですが、mb_strlen($title) の値は 7 ではない幾つになっていますか?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「get_page_by_titleで同一タイトルがあるのにマッチしない」には新たに返信することはできません。