2017-02-07 11 views
0

最近WebサイトをDrupalに移行しました。古いページタイトルの中には、what'sのような言葉で中括弧アポストロフィが含まれているものがあります。URLをハイフネーションして中括弧を無視するPHPの正規表現

この移行を実行する際に、サイトレイアウトを簡素化し、URLをより直感的にするために、多くのURLを変更しました。

私は、古いURLのリクエストを取得し、新しいページのタイトルに基づいて新しいURLにリダイレクトする転送システムを設定しようとしています。

Drupalは、作成したURLでこれらのカールをエンコードしますが、私のフォワーダはそれを削除しますので、停止する必要がありますので、タイトルに中括弧を含むページを除いて非常にうまく動作します。任意の非標準文字とスペースの代わりにハイフン(-)を置換する

/[^a-z\-\d]+/i(にpreg_replaceで)

...:現在

私はこの表現を使用して、ページのタイトルをクリーンアップ。

私は、中括弧で囲まれたアポストロフィが違うようにコード化されているため、この式でトラップされ削除されていることを認識しています。

正規表現にアピストロフィを無視し、ハイフンに変換しないようにするにはどうすればよいですか?

+0

アポストロフィはいくつありますか?唯一のものがあれば、str_replace( "'"、 ""、$ value)でそれらを置き換えるのはなぜですか? – Bernhard

+0

Bernhardに感謝します。問題は、移行プロセス中にDrupalによって生成されたすべてのURLにそれらが含まれているため、URLを削除するのではなく保存する必要があることです。だから私はカールを残しておきたいが、現時点ではカールを取り除いているので、これを行う方法が見つからない。 – Chris

+0

ok chris、[^ a-z- \ d ']についてはどうですか? REPLACE()を使用してデータベースクエリのアポストロフィを削除することができます。 – Bernhard

答えて

0

filtersを参考にしてください。

$var="http://www.w3s'choo��ls.co�m"; 

var_dump(filter_var($var, FILTER_SANITIZE_URL)); 

$varは「 '」文字を保持しますが、無効な文字は削除します。