2011-10-19 51 views
9

Tôi đang cố xóa dấu nháy đơn khỏi văn bản và nó không thực sự hoạt động. Nó phải là một cái gì đó nhỏ.Sự cố khi thay thế Dấu nháy đơn bằng Preg_Replace

$text = preg_replace('/\'/', '', $text); 

Đó là những gì tôi đang sử dụng ngay bây giờ để xóa. Tôi đang làm gì sai?

Có một loạt các tính năng này để xóa các ký tự đặc biệt để biến chúng thành các url và lưu chúng trong cơ sở dữ liệu của tôi. Tuy nhiên, một lô gần đây đã xuất hiện với một số & # 39; nơi 'được.

Bất kỳ trợ giúp nào được đánh giá cao. Cảm ơn bạn trước.

+4

Tại sao bạn sử dụng 'preg_replace' thay vì [' str_replace'] (http://www.php.net/manual/en/function.str-replace.php) hoặc ['strtr'] (http://www.php.net/manual/en/function.strtr.php)? – Jon

+0

Hoạt động tốt cho tôi: http://www.ideone.com/ycu2E – 999999

+1

Nó hoạt động cho tôi (mặc dù mọi người đều đúng rằng preg_replace không phù hợp). Có thể đã xảy ra sự cố với thông tin bạn nhập. – mqsoh

Trả lời

1

Cách sử dụng string_replace cho điều đó, điều này không yêu cầu cụm từ thông dụng.

$sText = preg_match("'", "", $sText); 

Điều đó đang được nói, đoạn sau đây hoạt động như coi trong 5.3:

$text = "woo't"; 
$text = preg_replace('/\'/', '', $text); 
echo $text; // woot 
3

& # 039 đại diện cho mã hóa thực thể HTML của một dấu nháy đơn, ví dụ: htmlspecialchars($text, ENT_QUOTES). Bạn có thể kiểm tra cho cả hai trường hợp:

$text = "hey this is ' a couple of ' apostrophes with an encoding '"; 
$text = preg_replace('/&#0*39;|\'/', '', $text); 

// outputs: hey this is a bunch of apostraphes 
echo $text; 

Bạn cũng có thể gắn bó với str_replace() tương đương (có xu hướng chạy nhanh hơn):

$text = "hey this is ' a couple of ' apostrophes with an encoding '"; 
$text = str_replace(array("'", "'"), '', $text); 

// outputs: hey this is a bunch of apostraphes 
echo $text; 
8

bạn có thể sử dụng regexp này để loại bỏ dấu nháy

$text = preg_replace('/(\'|&#0*39;)/', '', $text); 

bạn cũng có thể sử dụng str_replace để xóa dấu nháy đơn sau khi thực hiện html_entity_decode

$text = str_replace("'","", html_entity_decode($text, ENT_QUOTES)); 
+3

[Ranh giới thực thể HTML - Không đệm] (http://hakre.wordpress.com/2010/02/25/html-entity-boundaries-zero-padding/). – hakre

1

Ngoài các câu trả lời khác, bạn có thể muốn kiểm tra biểu trưng unicode?

$result = preg_replace('/([\'\x{0027}]|')/u', '', $subject); 
Các vấn đề liên quan