私は以下が何をしているのか知っていると思いますが、確認したい仮定をしたくありません。
正規表現は次のとおりです。
$value = preg_replace(array('/[^a-z0-9_ -]/', '/[ -]+/', '/^-|-$/'), array('', '-', ''), $str);
配列の最初の部分は単純で、az、0〜9、アンダースコア、スペース、およびハイフン以外のものを何も置き換えません。スペースの後のハイフンはエスケープされるべきではありませんか?
2番目の部分はよくわかりません....1つ以上のスペースまたは1つ以上のハイフンを1つのハイフンに置き換えると言っていると思いますか?私は正しいですか?しかし、繰り返しますが、ハイフンをエスケープしますか?
3番目の部分は少し紛らわしいです.....|
正規表現の文字はOR
演算子ではありませんか?では、ハイフンまたはハイフンを何も置き換えないでください。がエスケープされた場合、|
文字列全体が一致-|-
し、何も置き換えないようにする必要があるため、それを読み取りますか?
最後に.....私はそれがそれらを得る位置で交換を処理するという私の考えで正しいですか?したがって、最初に配列の最初のスポットを処理してから、文字列の残りの部分で2番目と3番目に移動します。たとえば、最初の置換で何かが置換された場合、2番目の置換は文字列の改訂バージョンで機能しますか?