Rumah > Soal Jawab > teks badan
my_string = '(kod VAT) alamat (alamat) 034372 350-352 Vo Van Kiet, Co Giang Ward'
Kod semasa saya =
preg_replace('/[^0-9]/', '',my_string)
Hasil semasa saya = 034372350352 Ini adalah output yang salah
Tetapi saya perlukan hasil yang betul = 034372
Bagaimana untuk mendapatkan urutan nombor pertama dalam rentetan menggunakan php?
Terima kasih
P粉2311124372023-09-10 09:31:03
<?php // make a service class or trait or package with a format enum by country could be useful. Also if you add the functionality to implement it into Laravel. class VatService { function getVatId(string $hayStack, string $needle = '/\d+/', bool $validateCount = false, $count = 6): string { return ( preg_match($needle, $hayStack, $matches) && ( $count == strlen($matches[0])) && $validateCount ) ? $matches[0] : throw new Exception('VaT number was not found : ' . $count . ' == ' . strlen($matches[0]) . ' ' . $matches[0] ); } }
$myString = '(VAT code) Địa chỉ (Address) 034372 350-352 Võ Văn Kiệt, Phường Cô Giang'; echo getVatId(hayStack: $myString, validateCount: true, count: 6);
Betul kata awak, saya telefon. Anda harus mempertimbangkan untuk melakukan beberapa pengesahan dan pengendalian ralat mengenai perkara ini. Mungkin contoh ini membantu dengan itu.
P粉0012064922023-09-10 09:11:13
$my_string = "(VAT code) Địa chỉ (Address) 034372 350-352 Võ Văn Kiệt, Phường Cô Giang"; $pattern = "/\d+/"; preg_match($pattern, $my_string, $matches); echo $matches[0]; //Outputs 034372
Anda boleh menggunakan preg_match untuk melakukan ini. Jika anda menghantar hujah ketiga ($match) kepada preg_match, ia akan mencipta tatasusunan yang diisi dengan hasil carian dan $matches[0] akan mengandungi contoh pertama teks yang sepadan dengan corak lengkap.
Jika mungkin tiada nombor dalam rentetan, anda boleh menggunakan pernyataan if seperti ini untuk mengenal pasti kes ini:
if (preg_match($pattern, $my_string, $matches)) { echo $matches[0]; } else { echo "No match found"; }
Lihat https://www.php.net/manual/ en/function.preg-match.php