01/10/2018, 11:56

Nhờ giúp đỡ về xử lý chuỗi trong PHP

Em có bài toán đặt ra như thế này:

 $name = 'apple Uiphone 5s 64Gb hàng khuyến mãi của thế giới di động '

 $word = Array
 (
     [0] => hang phan phoi chinh thuc
     [1] => hàng nhập khẩu
     [11] => viettel
     [12] => fpt
     [13] => the gioi di dong
     [14] => iphone
     [15] => ipad
     [16] => apple
     [17] => apple iphone
     [18] => APPLEaaxcsq
     [19] => khuyen mai
     [20] => hang khuyen mai
 )

Em muốn xóa trong biến $name tất cả các từ có trong $words nhưng vẫn giữ lại dấu Tiếng Việt khi đưa ra kết quả.

Cụ thể trong trường hợp này em muốn xuất ra 2 giá trị như sau:

 $name1 = ' Uiphone 5s 64Gb của thế giới di động';
 $name2 = ' Uiphone 5s 64Gb cua the gioi di dong';

Lưu ý: trong danh sách $words có từ iphone, nhưng trong $name thì iphone không phải là 1 từ, mà uiphone mới là một từ nên không bị xóa.

Đào An viết 14:13 ngày 01/10/2018

Sao $word có thế giới di động mà $name lại ko bị xóa ?

Dark.Hades viết 14:00 ngày 01/10/2018

str_replace hỗ trợ replace theo array đấy
http://php.net/manual/en/function.str-replace.php&arubalp=087fb2ba-98ac-4a9d-b106-dccbd9ec72

Implement lại trên C++, xem để hiểu cách nó hoạt động trên PHP

github.com

HadesD/Utilities/blob/master/CPP/str_replace.cpp

#include <string>

std::string str_replace(const std::string &search, const std::string &replace, std::string &subject)
{
  size_t pos = 0;
  while ((pos = str.find(search, pos)) != std::string::npos)
  {
    str.replace(pos, search.length(), replace);
    pos += replace.length();
  }
  return subject;
}

#include <vector>
std::string str_replace(const std::vector<std::string> &searches, const std::string &replace, std::string &subject)
{
  for (std::string search : searches)
  {
    size_t pos = 0;
    while ((pos = str.find(search, pos)) != std::string::npos)
This file has been truncated. show original

Hàm này hỗ trợ replace string->string, array->string, array->array

Bài liên quan
0