1

文字列の最後の 2 桁を抽出しようとしています。まず、スペースや特殊文字をすべて削除し、それらをハイフンに置き換えます。2 つのハイフンが連続している場合は、それらを削除します。ext 末尾のハイフンをすべて削除します。次に、文字列の緯度ハイフンの後の最後の 2 文字を抽出します。たとえば、この文字列の最後の文字、つまり1最後のハイフンの後を抽出するにはどうすればよいですか? awesome-page-1. 私のコードはここにあります

$string = 'awesome page@1';
  $slug = preg_replace('/[^a-zA-Z0-9]/', '-', $string);//replace spaces and special characters with space
        $slug = preg_replace('#-{2,}#', '-', $slug);//two hyphens following each other
        $slug = trim($slug, '-');//remove trailing hyphens
4

3 に答える 3

1

のパラメータとして配列を使用できますpreg_replace

$str  = 'awesome            page........@1';
$slug = preg_replace(
    array('~[^a-zA-Z0-9-]~', '~-+~'),
    '-',
    trim($str)
);
print $slug; // awesome-page-1

preg_match('~-([^-]*)$~', $slug, $m);
print $m[1]; // 1
于 2013-02-19T13:52:34.253 に答える
1

または、ハイフンの後の最後の文字が数字の場合にのみ一致させたい場合:

$slug = trim(preg_replace('/[^a-z0-9]+/i', '-', $string), '-');
if (preg_match('/^.*-(\d+)$/', $slug, $matches)) {                                                                                               
    echo $matches[1];                                                                
} else {                                                                             
    echo 'No Match!';                                                                
}
于 2013-02-19T13:54:14.367 に答える
1

を使用strrchr()して、作成されたスラッグの最後のダッシュを見つけ、 を使用してそれをスキップできsubstr()ます。

$slug = trim(preg_replace('/[^a-z0-9]+/i', '-', $string), '-');

echo substr(strrchr($slug, '-'), 1);

にダッシュがない場合$string、結果は空になります

デモ

于 2013-02-19T13:42:54.410 に答える