Hướng dẫn write a php script to remove all characters from a string except a-z a-z 0-9 or - viết một tập lệnh php để xóa tất cả các ký tự khỏi một chuỗi ngoại trừ a-z a-z 0-9 hoặc

Cập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21:50:37 (UTC/GMT +8 giờ)

Biểu hiện chính quy của PHP: Tập thể dục-7 với giải pháp

Viết tập lệnh PHP để xóa tất cả các ký tự khỏi chuỗi ngoại trừ A-Z A-Z 0-9 hoặc "".

Chuỗi mẫu: ABCDE $ ddfd @abcd) der]

Trình bày bằng hình ảnh:

Hướng dẫn write a php script to remove all characters from a string except a-z a-z 0-9 or - viết một tập lệnh php để xóa tất cả các ký tự khỏi một chuỗi ngoại trừ a-z a-z 0-9 hoặc

Giải pháp mẫu:

Mã PHP:

';
$newstr = preg_replace("/[^A-Za-z0-9 ]/", '', $string);
echo 'New string : '.$newstr."\n";
?>

Đầu ra mẫu:

Old string : abcde$ddfd @abcd )der]                         
New string : abcdeddfd abcd der

Sơ đồ :

Hướng dẫn write a php script to remove all characters from a string except a-z a-z 0-9 or - viết một tập lệnh php để xóa tất cả các ký tự khỏi một chuỗi ngoại trừ a-z a-z 0-9 hoặc

Trình chỉnh sửa mã PHP:

Có một cách khác để giải quyết giải pháp này? Đóng góp mã của bạn (và nhận xét) thông qua Disqus.

Trước đây: Viết tập lệnh PHP để trích xuất văn bản (trong dấu ngoặc đơn) từ một chuỗi. Write a PHP script to extract text (within parenthesis) from a string.
Next: PHP Date Exercises Home.

PHP: Lời khuyên trong ngày

PHP: Việc sử dụng ob_start () trong PHP là gì?

Hãy nghĩ về ob_start () nói rằng "Bắt đầu ghi nhớ mọi thứ thường sẽ được xuất ra, nhưng chưa làm gì với nó."

Ví dụ:

ob_start();
echo("Hello there!"); //would normally get printed to the screen/output to browser
$output = ob_get_contents();
ob_end_clean();

Có hai hàm khác mà bạn thường ghép nối với: ob_get_contents (), về cơ bản cung cấp cho bạn bất cứ điều gì đã được "lưu" vào bộ đệm kể từ khi nó được bật bằng ob_start (), và sau đó ob_end_clean () hoặc ob_flush () Ngừng tiết kiệm mọi thứ và loại bỏ bất cứ thứ gì đã được lưu, hoặc ngừng tiết kiệm và đầu ra tất cả cùng một lúc, tương ứng.

Tham khảo: https://bit.ly/3j1rwaf

Cập nhật

Giải pháp dưới đây có phiên bản "SEO thân thiện hơn":

function hyphenize($string) {
    $dict = array(
        "I'm"      => "I am",
        "thier"    => "their",
        // Add your own replacements here
    );
    return strtolower(
        preg_replace(
          array( '#[\\s-]+#', '#[^A-Za-z0-9. -]+#' ),
          array( '-', '' ),
          // the full cleanString() can be downloaded from http://www.unexpectedit.com/php/php-clean-string-of-utf8-chars-convert-to-similar-ascii-char
          cleanString(
              str_replace( // preg_replace can be used to support more complicated replacements
                  array_keys($dict),
                  array_values($dict),
                  urldecode($string)
              )
          )
        )
    );
}

function cleanString($text) {
    $utf8 = array(
        '/[áàâãªä]/u'   =>   'a',
        '/[ÁÀÂÃÄ]/u'    =>   'A',
        '/[ÍÌÎÏ]/u'     =>   'I',
        '/[íìîï]/u'     =>   'i',
        '/[éèêë]/u'     =>   'e',
        '/[ÉÈÊË]/u'     =>   'E',
        '/[óòôõºö]/u'   =>   'o',
        '/[ÓÒÔÕÖ]/u'    =>   'O',
        '/[úùûü]/u'     =>   'u',
        '/[ÚÙÛÜ]/u'     =>   'U',
        '/ç/'           =>   'c',
        '/Ç/'           =>   'C',
        '/ñ/'           =>   'n',
        '/Ñ/'           =>   'N',
        '/–/'           =>   '-', // UTF-8 hyphen to "normal" hyphen
        '/[’‘‹›‚]/u'    =>   ' ', // Literally a single quote
        '/[“”«»„]/u'    =>   ' ', // Double quote
        '/ /'           =>   ' ', // nonbreaking space (equiv. to 0x160)
    );
    return preg_replace(array_keys($utf8), array_values($utf8), $text);
}

Lý do cho các chức năng trên (mà tôi thấy không hiệu quả - một điều bên dưới là tốt hơn) là một dịch vụ không được đặt tên rõ ràng là kiểm tra chính tả và nhận dạng từ khóa trên URL.

Sau khi mất một thời gian dài đối với sự hoang tưởng của khách hàng, tôi phát hiện ra rằng họ không tưởng tượng ra mọi thứ - các chuyên gia SEO của họ [tôi chắc chắn không phải là một] báo cáo rằng, nói rằng, chuyển đổi "nền kinh tế vi phạm perù" thành viaggi-economy-peru "hành xử tốt hơn" so với viaggi-economy-per (các ký tự UTF8 "làm sạch" trước đó đã bị loại bỏ;Bogotà became bogot, Medellìn became medelln and so on).

Ngoài ra còn có một số lỗi chính tả phổ biến dường như ảnh hưởng đến kết quả, và lời giải thích duy nhất có ý nghĩa với tôi là URL của chúng tôi đã được giải nén, những từ ngữ được phát ra và thường lái xe biết các thuật toán xếp hạng nào. Và những thuật toán đó rõ ràng đã được cho ăn bằng các chuỗi được làm sạch UTF8, do đó "perù" trở thành "peru" thay vì "mỗi". "Per" không phù hợp và loại nó vào cổ.

Để cả giữ các ký tự UTF8 và thay thế một số lỗi chính tả, chức năng nhanh hơn bên dưới đã trở thành hàm chính xác hơn (?) Ở trên. $dict cần phải được thiết kế bằng tay, tất nhiên.

Câu trả lời trước

Một cách tiếp cận đơn giản:

// Remove all characters except A-Z, a-z, 0-9, dots, hyphens and spaces
// Note that the hyphen must go last not to be confused with a range (A-Z)
// and the dot, NOT being special (I know. My life was a lie), is NOT escaped

$str = preg_replace('/[^A-Za-z0-9. -]/', '', $str);

// Replace sequences of spaces with hyphen
$str = preg_replace('/  */', '-', $str);

// The above means "a space, followed by a space repeated zero or more times"
// (should be equivalent to / +/)

// You may also want to try this alternative:
$str = preg_replace('/\\s+/', '-', $str);

// where \s+ means "zero or more whitespaces" (a space is not necessarily the
// same as a whitespace) just to be sure and include everything

Lưu ý rằng bạn có thể phải trước tiên ____99 URL, vì%20 và + cả hai đều thực sự là không gian-ý tôi là, nếu bạn có "không bao giờ%20gonna%20Give%20you%20up" Bạn muốn nó trở thành không bao giờ gonna-give-bạn -Up, không bao giờ 20gonna20give20you20up. Bạn có thể không cần nó, nhưng tôi nghĩ rằng tôi sẽ đề cập đến khả năng.

Vì vậy, chức năng đã hoàn thành cùng với các trường hợp thử nghiệm:

function hyphenize($string) {
    return 
    ## strtolower(
          preg_replace(
            array('#[\\s-]+#', '#[^A-Za-z0-9. -]+#'),
            array('-', ''),
        ##     cleanString(
              urldecode($string)
        ##     )
        )
    ## )
    ;
}

print implode("\n", array_map(
    function($s) {
            return $s . ' becomes ' . hyphenize($s);
    },
    array(
    'Never%20gonna%20give%20you%20up',
    "I'm not the man I was",
    "'Légeresse', dit sa majesté",
    )));


Never%20gonna%20give%20you%20up    becomes  never-gonna-give-you-up
I'm not the man I was              becomes  im-not-the-man-I-was
'Légeresse', dit sa majesté        becomes  legeresse-dit-sa-majeste

Để xử lý UTF-8, tôi đã sử dụng triển khai

Old string : abcde$ddfd @abcd )der]                         
New string : abcdeddfd abcd der
0 được tìm thấy trực tuyến (liên kết bị hỏng kể từ đó, nhưng một bản sao bị tước xuống với tất cả các ký tự UTF8 không quá hosteric ở đầu câu trả lời; cũng dễ dàng thêm nhiều ký tự vào nó nếu Bạn cần) chuyển đổi các ký tự UTF8 thành các ký tự bình thường, do đó bảo tồn từ "nhìn" càng nhiều càng tốt. Nó có thể được đơn giản hóa và được bao bọc bên trong chức năng ở đây để thực hiện.

Chức năng trên cũng thực hiện chuyển đổi sang chữ thường - nhưng đó là một hương vị. Mã để làm như vậy đã được bình luận.

Làm thế nào để xóa tất cả các ký tự khỏi một chuỗi trong PHP?

Sử dụng phương thức str_ireplace (): Phương thức str_ireplace () được sử dụng để loại bỏ tất cả các ký tự đặc biệt khỏi chuỗi str str str bằng cách thay thế các ký tự này bằng không gian trắng (phạm lỗi). Sự khác biệt giữa str_replace và str_ireplace là str_ireplace không nhạy cảm với trường hợp.: The str_ireplace() method is used to remove all the special characters from the given string str by replacing these characters with the white space (” “). The difference between str_replace and str_ireplace is that str_ireplace is case-insensitive.

Làm thế nào để xóa các ký tự và không gian đặc biệt khỏi một chuỗi trong PHP?

Hàm Trim () sẽ loại bỏ khoảng trắng và các ký tự được xác định trước khác từ cả hai phía của chuỗi. Các hàm liên quan: LTRIM () - Loại bỏ khoảng trắng hoặc các ký tự được xác định trước khác khỏi phía bên trái của chuỗi. RTRIM () - Loại bỏ khoảng trắng hoặc các ký tự được xác định trước khác khỏi phía bên phải của chuỗi. removes whitespace and other predefined characters from both sides of a string. Related functions: ltrim() - Removes whitespace or other predefined characters from the left side of a string. rtrim() - Removes whitespace or other predefined characters from the right side of a string.

Làm thế nào tôi có thể thay thế các ký tự đặc biệt trong một chuỗi trong PHP?

Hàm str_replace () thay thế một số ký tự bằng một số ký tự khác trong một chuỗi. Hàm này hoạt động theo các quy tắc sau: Nếu chuỗi được tìm kiếm là một mảng, nó sẽ trả về một mảng. Nếu chuỗi được tìm kiếm là một mảng, hãy tìm và thay thế được thực hiện với mọi phần tử mảng. replaces some characters with some other characters in a string. This function works by the following rules: If the string to be searched is an array, it returns an array. If the string to be searched is an array, find and replace is performed with every array element.

Làm cách nào để loại bỏ một ký tự khỏi chuỗi trong Laravel?

Hàm ltrim () loại bỏ khoảng trắng hoặc các ký tự được xác định trước khác từ phía bên trái của chuỗi.Các hàm liên quan: RTRIM () - Loại bỏ khoảng trắng hoặc các ký tự được xác định trước khác khỏi phía bên phải của chuỗi.Trim () - Loại bỏ khoảng trắng hoặc các ký tự được xác định trước khác khỏi cả hai bên của chuỗi.ltrim() function removes whitespace or other predefined characters from the left side of a string. Related functions: rtrim() – Removes whitespace or other predefined characters from the right side of a string. trim() – Removes whitespace or other predefined characters from both sides of a string.