PHP: rawurlencode Preg-yerine içeride

2 Cevap php
while($row = mysql_fetch_array($result)){
$search = '' . $row['searchquery'];  
echo '<a href="http://www.example.com/' . preg_replace( array('/[^\s\w]/','/\s/'),array('','+'),$search) . '+/">' ...

ama aou birisi türleri ise, bu harfleri göstermiyor - rawurlencode olası şu ile, ama ben pregreplace ile boşluk kaldırmak ve + ile değiştirmek istiyorum

Bu mümkün mü?

2 Cevap

Sorunuzun cevabı aslında UTF-8 dizeleri işleyebilir bir düzenli ifade fonksiyonunu kullanmak olacaktır.

mb_internal_encoding("UTF-8"); 
mb_regex_encoding('UTF-8');

// eliminate the first spaces
$search = mb_ereg_replace('^\s*', '', ''.$row['searchquery']);
// replace the other spaces with '+' signs
echo '<a href="http://www.example.com/' . mb_ereg_replace('\s', '+', $search) . '+/">';

Ayrıca preg fonksiyonlar için /u değiştirici kullanabilirsiniz:

echo '<a href="http://www.example.com/' . preg_replace(array('/[^\s\w]/u','/\s/u'),array('','+'),$search) . '+/">'

Bu iyi görünüyor, ama dikkatli olmalısınız. Ben şimdi denedim ve gayet sizin karakterleri çıktılar, ama ben girişi (AST) olarak verdik diğer bazı UTF-8 karakterleri çıkarılır fark ettim.

zaf bu :) yapmak daha kolay yolları vardır, doğru.

Eğer str_replace işlevine bir itirazınız var mı? Eğer değilse o zaman rawurlencode ile kullanabilirsiniz. Bu çok basit ve hızlı olacaktır.