Herhangi bir UTF karakter hariç noktalama maç için regex

2 Cevap php

Ben otomatik olarak bir URL (*. Html) bir dosya adı olarak kullanılmak üzere bir dize dönüştürmek için PHP bir işlevi hazırlıyorum. Chars ve çizgi (_) - ASCII güvenli tarafta olmak için kullanmak olmalıdır rağmen, SEO ihtiyaçları için ben dosya herhangi bir dilde olması için izin gerekiyor ama bir çizgi dışındaki noktalama işaretleri dahil etmek istemiyorum () gibi *% $ # 'izin verilmemelidir "@.

Spaces tire dönüştürülmesi gerekir.

Ben Regex kullanarak kolay yolu olacağını düşünüyorum, ama ben UTF8 dizeleri işlemek için nasıl emin değilim.

Benim ASCII fonksiyonları bu gibi görünüyor:

function convertToPath($string)
{
    $string = strtolower(trim($string));
    $string = preg_replace('/[^a-z0-9-]/', '-', $string);
    $string = preg_replace('/-+/', "-", $string);
    return $string;
}

Teşekkürler,

Roy.

2 Cevap

Ben SEO için size URL ASCII karakter sopa gerektiğini ihtiyacı olduğunu düşünüyorum.

Teorik olarak, çok daha fazla karakter URL'leri izin verilir. Uygulamada çoğu sistemler sadece ASCII güvenilir ayrıştırmak.

Also, many automagically-parse-the-link scripts choke on non-ASCII characters. So allowing URLs with non-ASCII characters in your URLs drastically reduces the change of your link showing up (correctly) in user generated content. (if you want an example of such a script, take a look at the stackoverflow script, it chokes on parenthesis for example)

You could also take a look at: How to handle diacritics (accents) when rewriting ‘pretty URLs’

Kabul çözüm ASCII olmayan karakterleri transiterate için var:

<?php
  $text = iconv('UTF-8', 'US-ASCII//TRANSLIT', $text);
?>

Umarım bu yardımcı olur