Di sisi lain. Orang-orang yang membeo regex adalah meme jahat terlalu sering IMO. Jelas bahwa preg_match terlalu sering digunakan php
, tetapi kurang jelas bahwa seringkali masuk akal untuk melakukannya (dalam PHP).
Saya akan pergi sejauh ini dan menduga bahwa itu adalah optimasi mikro lain di tanah php untuk menggunakan fungsi string. Ada banyak dan banyak yang berguna, dan mereka biasanya merupakan pilihan yang lebih baik. Tetapi Anda tidak harus menghindari preg_match
mendukung banyak strpos
dan if
rantai. Karena dalam praktiknya ternyata, libpcre seringkali lebih cepat daripada PHP dapat menjalankan loop mencari alternatif string misalnya
Sebagai contoh baru-baru ini membuat saya sadar, menguji apakah sebuah string adalah huruf kecil semua:
if ($string == strtolower($string))
Lebih mudah dibaca daripada:
if (!preg_match("/[A-Z]/", $string))
Dan Anda akan menganggap yang pertama harus lebih cepat, karena itu semua-PHP. Tetapi dalam kenyataannya regex hanya melihat ke string sekali, dan dapat membatalkan kondisi yang dinegasikan segera setelah menemukan huruf besar. Namun pendekatan strtolower () memeriksa string dua kali. Strtolower () pertama membuat string duplikat dengan mengulangi setiap huruf, membandingkan dan melapangkannya. Kemudian ==
beralih ke yang asli dan salinan lagi, membandingkannya sekali lagi.
Jadi itu bukan kasus yang jelas. Dan untuk bersikap objektif yang pertama seringkali lebih cepat, karena Anda biasanya hanya membandingkan string pendek. Tetapi sangat penting untuk tidak membabi buta dengan asumsi bahwa fungsi string PHP selalu disarankan daripada ekspresi reguler.
(Saya tergoda untuk menambahkan kata-kata kasar lain tentang jawaban menyenangkan @ bobince mengenai xhtml-regexes, dan bagaimana ini baru-baru ini sering dikaitkan dengan cara yang sangat tidak membantu. Dan jawaban yang lebih objektif di bawah ini diabaikan.)