phpで スラッグを分解して 重複タイトルの-2を 分岐条件にした詳細

preg_split — 正規表現で文字列を分割する
http://php.net/manual/ja/function.preg-split.php

<?php
// カンマまたは " ", \r, \t, \n , \f などの空白文字で句を分割する。
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
?>

正規表現http://www.megasoft.co.jp/mifes/seiki/meta.html

“/[\s,]+/” ココの部分

//で囲む 正規表現
http://www.kt.rim.or.jp/~kbk/gawk-30/gawk_5.html

[]が一致するもの 指定したどれか
http://www.mnet.ne.jp/~nakama/

+が最低それが一個以上
http://www.mnet.ne.jp/~nakama/

実例

<?php
//シングルでタイトルが同じ記事が合った場合-2とかスラッグにつくが、the_title wp_titleにはつかないのでディスプリクション・タイトルが重複するのを防ぐ
if (is_single()){//シングルなら
$dd_title = urldecode ($slug_name = $post->post_name);// スラッグをデコードして取得
http://qiita.com/t_okubo/items/f4f71958a2d358795192
http://php.net/manual/ja/function.urldecode.php
//echo $dd_title;
$keywords = preg_split("/[-]+/", $dd_title);//phpスプリット - にて
//print_r($keywords);
$last = end($keywords); //配列の最後を取得する ほにゃらら-2 ▶ $keywords[0]がほにゃらら $keywords[1]が2
参考http://qiita.com/t_cyrill/items/da1e6c73b1a25eaeee16
//echo $last;
if (ctype_digit($last)) {//ケツが数字なら
参考http://php.net/manual/ja/function.ctype-digit.php
//echo $last;
}
}
?>

重複防止 記事タイトルが同じだったら タイトルとディスプリクションが被る件

だいぶスキル上がったなjsの本よんだでかな
正規表現も学ぼう

分岐準備メタタグ前に

<?php
//シングルでタイトルが同じ記事が合った場合-2とかスラッグにつくが、the_title wp_titleにはつかないのでディスプリクション・タイトルが重複するのを防ぐ
if (is_single()){//シングルなら
$dd_title = urldecode ($slug_name = $post->post_name);// スラッグを取得
//echo $dd_title;
$keywords = preg_split("/[-]+/", $dd_title);//phpスプリット - にて
//print_r($keywords);
$last = end($keywords); //配列の最後を取得する ほにゃらら-2 $keywords[0]がほにゃらら $keywords[1]が2
//echo $last;
if (ctype_digit($last)) {//ケツが数字なら
//echo $last;
}
}
?>

ディスプリクションでは

<?php elseif(is_single()): ?><?php the_title(); ?><?php if (ctype_digit($last)) ://ケツが数字なら つまりタイトルが重複 ?><?php echo $last; endif ?> | 

タイトルでは

global $page, $paged;

	if (is_single())://シングルなら
//分岐準備はメタディスプの前に書いてある
if (ctype_digit($last)) ://ケツが数字なら つまりタイトルが重複	
wp_title( ''.$last.' | ', true, 'right' ); //数字を差し込む
else://普通
wp_title( ' | ', true, 'right' );	
endif;
	else:

	wp_title( '|', true, 'right' );
	
	endif;

いずれ役に立ちそうな PHPからJavaScriptに変数を渡すまとめ

http://qiita.com/cither/items/b98cc4e237dcc8f7e51f

<?php
    $array = array("hoge" => "fuga");
?>
<script>
    var array = <?php echo json_encode($array, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT); ?>;
    console.log(array); // Object { hoge: "fuga" }
</script>
function json_safe_encode($data){
    return json_encode($data, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT);
}
<?php
    $null        = null;
    $string      = "hoge";
    $emptyString = "";
    $array       = array("hoge", "fuga");
    $empty_array = array();
    $asoc_array  = array("hoge" => 1, "fuga" => 2);
    $boolean     = false;
    $str_boolean = "false";
    $zero        = 0;
    $str_zero    = "0";
    $float       = 0.12;
?>
<script id="script" src="script.js"
    data-null         ='<?php echo json_safe_encode($null); ?>'
    data-string       ='<?php echo json_safe_encode($string); ?>'
    data-empty-string ='<?php echo json_safe_encode($empty_string); ?>'
    data-array        ='<?php echo json_safe_encode($array); ?>'
    data-empty-array  ='<?php echo json_safe_encode($empty_array); ?>'
    data-asoc-array   ='<?php echo json_safe_encode($asoc_array); ?>'
    data-boolean      ='<?php echo json_safe_encode($boolean); ?>'
    data-str-boolean  ='<?php echo json_safe_encode($str_boolean); ?>'
    data-zero         ='<?php echo json_safe_encode($zero); ?>'
    data-str-zero     ='<?php echo json_safe_encode($str_zero); ?>'
    data-float        ='<?php echo json_safe_encode($float); ?>'
></script>
var $script     = $('#script');
var _null       = JSON.parse($script.attr('data-null'));
var string      = JSON.parse($script.attr('data-string'));
var emptyString = JSON.parse($script.attr('data-empty-string'));
var array       = JSON.parse($script.attr('data-array'));
var emptyArray  = JSON.parse($script.attr('data-empty-array'));
var asocArray   = JSON.parse($script.attr('data-asoc-array'));
var boolean     = JSON.parse($script.attr('data-boolean'));
var strBoolean  = JSON.parse($script.attr('data-str-boolean'));
var zero        = JSON.parse($script.attr('data-zero'));
var strZero     = JSON.parse($script.attr('data-str-zero'));
var float       = JSON.parse($script.attr('data-float'));


console.log(_null);       // null
console.log(string);      // "hoge"
console.log(emptyString); // ""
console.log(array);       // Array [ "hoge", "fuga" ]
console.log(emptyArray);  // Array [  ]
console.log(asocArray);   // Object { hoge: 1, fuga: 2 }
console.log(boolean);     // false
console.log(strBoolean);  // "false"
console.log(zero);        // 0
console.log(strZero);     // "0"
console.log(float);       // 0.12

重複防止 カテゴリのスラッグの方をディスプリクション/タイトルに入れる場合 デコードして 

ビシューで ブログ納入実績カテゴリ と 納入実績のタイトルとディスプリクションがかぶった

解りやすく カテゴリを納入実績としてスラッグをブログ納入実績
としたため

対策 

ディスプリクション&タイトルで入れる文字をスラッグにする

if(is_category()): echo urldecode ($tax_slug = get_term_by( 'name', single_term_title( '', false ), 'category' )->slug)


global $page, $paged;
	
	
	if (is_category()): 
	echo urldecode ($tax_slug = get_term_by( 'name', single_term_title( '', false ), 'category' )->slug);
	echo ' | ';
	
	else:

	wp_title( '|', true, 'right' );
	
	endif;

デコードしないと文字化けする

http://php.net/manual/ja/function.urldecode.php

タクソノミーでも行ける
http://elearn.jp/wpman/function/get_term_by.html