0

標準のワードプレスのタイトルをスラッグに変えようとしています。これにより、すべての文字が小文字になり、スペースがダッシュに置き換えられ、タイトルにあるすべての「&」記号が削除されます。

では、このタイトルを例として使用しましょう: " Identity & Wayfinding "

これが私のPHPです:

<?php 
$title = get_the_title(); 
$lower = strtolower($title);
$noDash = str_replace(' ', '-', $lower);
$noAnd = str_replace('&', '', $noDash);
echo $noAnd;
?>

これにより、タイトルが「identity-#038;-wayfinding」に変わります

小文字の変換は機能しましたが、「&」を何も置換しても機能しません。「&」を HTML 特殊文字に変換しています。「&」を単に空白に置き換えるだけでなく、その後のダッシュを削除して、最終的なタイトルが「identity-wayfinding」になるようにする方法はありますか?

4

5 に答える 5

0

これが私が使っている関数です。

function text_as_url($str='', $separator = 'dash', $lowercase = false){
    if ($separator == 'dash'){
        $search     = '_';
        $replace    = '-';
    } else {
        $search     = '-';
        $replace    = '_';
    }

    $trans = array(
                    '\/'                    => '-',
                    '&\#\d+?;'              => '-',
                    '&\S+?;'                => '-',
                    '\s+'                   => $replace,
                    '[^a-z0-9\-\._]'        => '', // accents
                    $replace.'+'            => $replace,
                    $replace.'$'            => $replace,
                    '^'.$replace            => $replace,
                    '\.+$'                  => '-'
                );

    $str = strip_tags($str);

    foreach ($trans as $key => $val){
        $str = preg_replace("#".$key."#i", $val, $str);
    }

    if($lowercase === true){
        $str = strtolower($str);
    }

    return trim(stripslashes($str));
}
于 2012-07-10T17:25:26.593 に答える
0

あなたはおそらくナメクジについて話しているでしょう、これらを見てください:

于 2012-07-10T17:22:19.073 に答える
0

次のコードを使用します。

 <?php
function create_slug($string){
$slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
$slug=ltrim($slug, "-");
$slug=rtrim($slug, "-");
return strtolower($slug);
}
echo create_slug('does this thing work or not');
//returns 'does-this-thing-work-or-not'

echo "<br />";
echo create_slug('"Identity & Wayfinding"');
?>

実際の例

もちろん、Wordpress でこの関数を使用する場合は、これを使用するだけです。

<?php sanitize_title( $title, $fallback_title ) ?>

ここで$title、入力文字列 &$fallback_titleはデフォルト値で、$title空の場合。詳細はこちら: Wordpress 関数リファレンス/サニタイズ タイトル

于 2012-07-10T17:24:27.303 に答える